繁体   English   中英

在命令行或CMake上为Visual Studio代码分析指定规则集

[英]Specify ruleset for Visual Studio code analysis on command line or from CMake

我正在尝试为我的CMake驱动项目启用代码分析。 我生成Visual Studio 2013解决方案,并希望使用特定规则集启用代码分析。 我知道我可以通过在我的CMake文件中指定add_definitions(“/ analyze”)来启用代码分析,但是如何控制使用哪个规则集?

据我所知,控制使用的规则集的唯一方法是通过项目文件中的xml元素CodeAnalysisRuleSet,但我无法从CMake访问它。

如果您尝试通过命令行构建解决此问题 - 通过cmake --build或直接调用msbuild - 而不是在使用Visual Studio生成的解决方案时,可以在调用构建时设置相关属性。

用cmake驱动构建:

PS c:\build-dir> cmake --build . -- '/p:RunCodeAnalysis=true' `
                     '/p:CodeAnalysisRuleSet=NativeRecommendedRules.ruleset'

使用MSBuild驱动构建:

PS c:\build-dir> msbuild ALL_BUILD.vcxproj '/p:RunCodeAnalysis=true' `
                     '/p:CodeAnalysisRuleSet=NativeRecommendedRules'

如果自定义目录中有自定义规则集,则还需要设置属性CodeAnalysisRuleSetDirectories

PS c:\build-dir> cmake --build . -- '/p:RunCodeAnalysis=true' `
                     '/p:CodeAnalysisRuleSet=custom.ruleset' `
                     '/p:CodeAnalysisRuleSetDirectories=c:\src\ruletsets'

(使用CMake 3.8.0,MSBuild 15.3.409.57025和Visual C ++ 2017 19.11.25506测试。)

我不确定这对VS2013解决方案有多远。 使用Visual Studio 2015,我使用项目用户模板(* .vcxproj.user),其中包含以下内容:

C:\\ MyProject的\\ Template.USERNAME.user

 <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <CodeAnalysisRuleSet>@CMAKE_SOURCE_DIR@\\SecurityRecommended.ruleset</CodeAnalysisRuleSet> <RunCodeAnalysis>true</RunCodeAnalysis> </PropertyGroup> </Project> 

您可能需要将ToolsVersion之类的内容更改为12.x.

当您使用CONFIGURE_FILE函数生成实际的PROJECT.vcxproj.user文件时, @CMAKE_SOURCE_DIR@将自动被cmake替换。 我的项目的CMakeLists.txt中有以下行:

SET(USER_NAME $ENV{USERNAME} CACHE STRING UserName)
SET(USER_FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.vcxproj.user)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/Template.${USER_NAME}.user ${USER_FILE} @ONLY)

最后,我假设您可以使用这些模板用户定义PROJECT.vcxproj中的任何内容。

VS2017:在CMakeSettings.json部分“配置”中添加参数“codeAnalysisRuleset”:“NativeRecommendedRules.ruleset” 然后在解决方案资源管理器中右键单击需要文件.cpp选择菜单“在文件上运行代码分析”。 您可以从VS文件夹“c:\\ Program Files(x86)\\ Microsoft Visual Studio \\ 2017 \\ Enterprise \\ Team Tools \\ Static Analysis Tools \\ Rule Sets \\ NativeRecommendedRules.ruleset”中的各种分析器中进行选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM