Cppcheck 不展开 Visual Studio 项目宏

Cppcheck doesn't expand Visual Studio project macros

为了在我们公司自动化 C++ 代码质量分析,我被要求集成 Cppcheck tool with our SonarQube server (through the C++ Community plugin)。

对于我们主要产品的 C++ 部分,在 Visual Studio 中,我们有十几个解决方案,每个解决方案中有将近一百个项目。

我们使用标准继承property page macros like $(SolutionDir) and $(ProjectDir), and define our own custom (user-defined) macros as well (via Property Manager).

我目前正在编写 Windows 命令行批处理脚本来对每个解决方案分别执行静态代码分析。这个想法是 运行 Cppcheck 使用 --project="solution_name.sln" 之类的选项,然后 运行 SonarQube Scanner 解析生成的 XML 输出。

但是有一个问题。似乎 Cppcheck 在包含路径解析期间无法识别这些 $(SolutionDir) 宏。 (当 运行 带有 --check-config 选项时,它会抱怨缺少包含文件。)

不幸的是,我什至无法为解决方案提供额外的包含路径,因为在指定 --project-I--includes-file 选项被忽略。

Cppcheck 应该如何在自动化环境中与 Visual Studio 项目一起使用?我说的是命令行界面(在服务器端使用),而不是交互式插件(在开发人员机器上本地使用)。

一种可能的方法是创建一个 Python 脚本来预处理数百个项目 (*.vcxproj) 文件,用真实路径替换所有这些宏(每次从 SVN 检出和在执行 Cppcheck 之前)。或者有没有正确的方法让 Cppcheck 识别 Visual Studio 宏?

是的,--project 应该可以工作。只是 --project 是一个很新的特性。

我想要一个简单的解决方案,这样我就可以轻松地重现。你能用这样的配置创建一些简单的解决方案吗?不需要真正的代码。我认为一个只有 #include 然后是一个空的 header 的 cpp 文件可能就足够了。配置它,使 Visual Studio 找到 header 但 Cppcheck 找不到。

请将其附加到 orbitcowboy 创建的票中。