从命令行或CMake指定Visual Studio代码分析的规则集

11

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

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

3个回答

5
如果您正在尝试通过命令行构建来解决此问题--无论是通过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进行测试。)

3

我不确定这对于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 中的任何内容。

2

VS2017: 在CMakeSettings.json的"configuration"部分中添加参数"codeAnalysisRuleset": "NativeRecommendedRules.ruleset"。然后在解决方案资源管理器中右键单击需要的.cpp文件,选择菜单"Run Code Analysis on File"。你可以从VS文件夹"c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Static Analysis Tools\Rule Sets\NativeRecommendedRules.ruleset"中选择各种分析工具。


注:Original Answer翻译成"最初的回答",但是这个短语没有上下文,在这里不适合使用,所以本次翻译忽略该短语的翻译。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接