SonarQube 社区版集成
通过 SonarQube 与 CppDepend 集成提升 C/C++ 代码质量
在当今竞争激烈的软件开发环境中,确保代码质量和可维护性对任何项目的成功都至关重要。将 SonarQube Community Edition 与 CppDepend 集成,为开发人员提供了强大的组合解决方案,实现无缝的代码分析。
在本指南中,我们将引导您完成集成这两个强大工具的过程,让您在最小化技术债务的同时最大化项目的代码质量和可维护性。了解这种集成如何彻底改变您的开发流程并为项目成功奠定基础。
- 插件先决条件
- 安装CppDepend插件
- 配置CppDepend插件
- 在 Sonar 服务器中激活 CppDepend 规则
- 运行Sonar-Scanner
- 在 SonarQube 界面中浏览 CppDepend 规则问题
重要:
在计算机上使用 CppDepend 之前,您必须先 激活您的SonarQube许可证 或 开始您的评估期 为此,只需在计算机上解压 CppDepend 文件并启动 VisualCppDepend.exe 一次。如果您的机器已连接到互联网,您将经历一个简短的激活过程。
如果您的机器没有互联网连接,将提供替代的离线激活程序。此步骤对于运行 SonarQube CppDepend 插件是必需的。
请注意,CppDepend SonarQube 插件兼容 SonarQube 5.6 及以上版本。
插件先决条件
- 安装 SonarrQube
下载 http://www.sonarqube.org/downloads/ - 安装 sonar-scanner
安装文档 https://docs.sonarqube.org/9.8/analyzing-source-code/scanners/sonarscanner/ - 拥有现有的C++ sonar扩展
它可能是 SonarQube C++ 扩展或来自以下来源的 SonarQube C++ 社区插件 https://github.com/SonarOpenCommunity/sonar-cxx
重要: 如果尚未安装 C++ 的现有扩展,请参阅以下文档 SonarQube独立集成。
安装CppDepend扩展
CppDepend在中提供SonarQube扩展 $InstallDir/Integrations/SonarQube
- 对于Java,复制 sonar-jarchitect-plugin-1.0.jar
- 对于C++ SonarQube扩展,复制 sonar-cxx-cppdepend-sqplugin.jar
- 对于 SonarQube 社区版本 2 及以上,请复制 sonar-cxx-cppdepend-community-2.jar
- 对于 SonarQube 社区版本 1,请复制 sonar-cxx-cppdepend-community-1.jar
- 从 $CppDependInstallDir$\Integrations\SonarQube 目录
- 到 $SonarQubeInstallDir$\extensions\plugins 目录
- 重启 SonarQube 服务器以使其加载 CppDepend 插件。
配置CppDepend插件
在SonarQube用户界面中,转到 管理 为此,您需要以相应的管理员权限登录。

- 必选 指定 CppDepend SonarQube 规则扫描器的完整路径。对于 Windows,它是 CppDepend.SonarQube.RuleRunner.exe (Windows), CppDepend.SonarQube.RuleRunner (Linux、macOS) 从 $CppDependInstallPath$\Libs 目录。不要在路径前加上环境变量路径,请写完整的绝对路径(对于本文档中的所有路径写法,请遵循此建议)。
- 可选 指定CppDepend项目文件路径 (.cdproj 扩展名)来获取规则。如果未指定,将使用默认的 CppDepend 规则集。
如果您指定 CppDepend 项目文件路径,则会考虑以下位置定义的已激活规则:- CppDepend项目文件,
- 在 CppDepend 项目文件引用的 CppDepend 规则文件中定义的规则
在 Sonar 服务器中激活 CppDepend 规则
CppDepend 规则现已加载到 SonarQube 存储库中,但尚未激活。要激活它们,您必须:
- 以管理员身份登录SonarQube界面
- 转到 质量配置文件 标签页
- 创建自定义 Quality Profile。如果您已有自定义 Quality Profile,可以跳过此步骤。

- 请确保选择 Sonar way 配置文件作为您新 Quality Profile 的父级:

- 创建自定义 Quality Profile 后,您必须添加 CppDepend 规则。为此,请点击 激活更多 按钮:

- 选择 CppDepend 仓库,并点击 批量更改 按钮,并在您的新 Quality Profile 中激活所有 CppDepend 规则:

- 最后返回 Quality Profile 选项卡,将新的 Quality Profile 设置为 默认:

激活 CppDepend 规则(SonarQube v6.X 之前)
- 以管理员身份登录SonarQube界面
- 转到 规则 标签页
- 选择 语言C++ 和 仓库: CppDepend

- 通过点击在所需配置文件中激活这些规则 批量更改 - 激活于:

重要:
请注意 处理 规则的是规则名称,还包括父组名称和规则源代码。在以下情况下,此说明很重要:
- 用于分析的 CppDepend 项目包含自定义规则集
- 在 SonarQube 配置中指定的用于在 SonarQube 系统中定义规则的 CppDepend 项目(参数 来自cdproj的CppDepend规则,见上一节)不同于用于分析的 CppDepend 项目。
在这种情况下,如果两个规则集不完全对应,则规则将无法在 SonarQube 系统中解析,问题也不会被计算。
如果您的自定义规则集中添加或删除了某些规则:
- 重启 SonarQube 服务器,让它解析 SonarQube 配置中指定的 CppDepend 项目以定义规则
- 再次进入 规则 以管理员身份登录的选项卡,以便通过以下方式激活/停用这些新增/删除的规则 批量更改 操作。
运行Sonar-Scanner
这是 SonarQube文档 关于从命令行参数运行 Sonar-Scanner。
CppDepend项目文件参数是 强制 -D sonar.cpp.cppdepend.projectPath={'{'}the path of cdproj{'}'}.
如果未在 SonarQube 扩展配置中完成,您也可以从命令行指定 CppDepend 扫描器
Windows上的C/C++
Linux/macOS上的C/C++
Windows上的Java
Linux/macOS上的Java
提示: 不要在路径中使用任何环境变量,如果路径包含空格字符,请用双引号括起来 -Dsonar.cpp.cppdepend.projectPath="C:\work with space\project.cdproj"
在 SonarQube 界面中浏览 CppDepend 规则问题
- CppDepend 规则问题现在在 SonarQube 界面中作为普通问题报告。
- 您可以浏览它、跳转到源代码声明(在 UI 中)、分配它、更改其状态……

备注:
如果 SonarQube 界面中缺少某些问题:
- 检查您是否遵循了本文档中说明的所有规则激活步骤。
- 然后仔细检查相关规则是否确实已激活,方法是检查它是否至少产生一个问题。
- 在这种情况下,如果缺少某些问题,那是因为找不到其父类型的源文件声明。这种情况通常发生在编译器生成的类型及其成员上。
