【发布时间】:2016-10-31 15:31:03
【问题描述】:
为了在我们公司自动化 C++ 代码质量分析,我被要求将 Cppcheck tool 与我们的 SonarQube 服务器集成(通过 C++ Community plugin)。
对于我们主要产品的 C++ 部分,在 Visual Studio 中,我们有十几个解决方案,每个解决方案中包含近百个项目。
我们使用标准继承的property page macros,如$(SolutionDir) 和$(ProjectDir),并定义我们自己的自定义(用户定义)宏(通过Property Manager)。
我目前正在编写 Windows 命令行批处理脚本来分别对每个解决方案执行静态代码分析。想法是使用 --project="solution_name.sln" 之类的选项运行 Cppcheck,然后运行 SonarQube Scanner 来解析生成的 XML 输出。
但是有一个问题。在包含路径解析期间,Cppcheck 似乎无法识别这些 $(SolutionDir) 宏。 (当使用--check-config 选项运行时,它会抱怨缺少包含文件。)
不幸的是,我什至无法为解决方案提供额外的包含路径,因为在指定 --project 时会忽略 -I 和 --includes-file 选项。
应该如何在自动化环境中将 Cppcheck 用于 Visual Studio 项目?我说的是命令行界面(在服务器端使用),而不是交互式插件(在开发人员的机器上本地使用)。
一种可能的方法是创建一个 Python 脚本来预处理数百个项目 (*.vcxproj) 文件,用真实路径替换所有这些宏(每次从 SVN 签出之后和执行 Cppcheck 之前)。或者有没有合适的方法让 Cppcheck 识别 Visual Studio 宏?
【问题讨论】:
-
我在 Cppcheck 的错误跟踪器上为您创建了一张票 trac.cppcheck.net/ticket/7791#ticket
-
@orbitcowboy 感谢您提交官方票!