c++ - 在命令行或从 CMake 指定用于 Visual Studio 代码分析的规则集

标签 c++ visual-studio cmake visual-studio-2013 code-analysis

我正在尝试为我的 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 进行测试。)

关于c++ - 在命令行或从 CMake 指定用于 Visual Studio 代码分析的规则集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410651/

相关文章:

c++ - Asio C++ 库 : asio/detail/config. hpp:没有这样的文件或目录

c++ - 多线程 MPI 进程突然终止

c++ - 要释放动态数组初始化时程序崩溃

c++ - 如何释放字符串未使用的容量

git - 如何在 Visual Studio 2013 中存储未提交的更改

visual-studio - 什么是 [Cycle Detected] 内存泄漏?

c++ - Visual Studio mkl_link_tool.exe 链接错误

c++ - Cmake 将选项设置回默认值

c - 如何在 CMake 中添加测试用例?

macos - 如何在 CMake 脚本中获取应用程序包的路径以将其提供给 fixup_bundle()?