首页/文档/DevOps与CI/CD/SonarQube 社区版集成

SonarQube 社区版集成

通过 SonarQube 与 CppDepend 集成提升 C/C++ 代码质量

在当今竞争激烈的软件开发环境中,确保代码质量和可维护性对任何项目的成功都至关重要。将 SonarQube Community Edition 与 CppDepend 集成,为开发人员提供了强大的组合解决方案,实现无缝的代码分析。

在本指南中,我们将引导您完成集成这两个强大工具的过程,让您在最小化技术债务的同时最大化项目的代码质量和可维护性。了解这种集成如何彻底改变您的开发流程并为项目成功奠定基础。

重要:

在计算机上使用 CppDepend 之前,您必须先 激活您的SonarQube许可证开始您的评估期 为此,只需在计算机上解压 CppDepend 文件并启动 VisualCppDepend.exe 一次。如果您的机器已连接到互联网,您将经历一个简短的激活过程。

如果您的机器没有互联网连接,将提供替代的离线激活程序。此步骤对于运行 SonarQube CppDepend 插件是必需的。

请注意,CppDepend SonarQube 插件兼容 SonarQube 5.6 及以上版本。

插件先决条件

重要: 如果尚未安装 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用户界面中,转到 管理 为此,您需要以相应的管理员权限登录。

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 的父级:Sonar way父配置文件
  • 创建自定义 Quality Profile 后,您必须添加 CppDepend 规则。为此,请点击 激活更多 按钮:"激活更多"按钮
  • 选择 CppDepend 仓库,并点击 批量更改 按钮,并在您的新 Quality Profile 中激活所有 CppDepend 规则:批量更改CppDepend规则
  • 最后返回 Quality Profile 选项卡,将新的 Quality Profile 设置为 默认:设置默认质量配置文件

激活 CppDepend 规则(SonarQube v6.X 之前)

  • 以管理员身份登录SonarQube界面
  • 转到 规则 标签页
  • 选择 语言C++仓库: CppDepend规则标签页 CppDepend
  • 通过点击在所需配置文件中激活这些规则 批量更改 - 激活于:启用批量更改

重要:

请注意 处理 规则的是规则名称,还包括父组名称和规则源代码。在以下情况下,此说明很重要:

  • 用于分析的 CppDepend 项目包含自定义规则集
  • 在 SonarQube 配置中指定的用于在 SonarQube 系统中定义规则的 CppDepend 项目(参数 来自cdproj的CppDepend规则,见上一节)不同于用于分析的 CppDepend 项目。

在这种情况下,如果两个规则集不完全对应,则规则将无法在 SonarQube 系统中解析,问题也不会被计算。

如果您的自定义规则集中添加或删除了某些规则:

  1. 重启 SonarQube 服务器,让它解析 SonarQube 配置中指定的 CppDepend 项目以定义规则
  2. 再次进入 规则 以管理员身份登录的选项卡,以便通过以下方式激活/停用这些新增/删除的规则 批量更改 操作。

运行Sonar-Scanner

这是 SonarQube文档 关于从命令行参数运行 Sonar-Scanner。

CppDepend项目文件参数是 强制 -D sonar.cpp.cppdepend.projectPath={'{'}the path of cdproj{'}'}.

>sonar-scanner -D sonar.cpp.cppdepend.projectPath={cdproj的路径}

如果未在 SonarQube 扩展配置中完成,您也可以从命令行指定 CppDepend 扫描器

Windows上的C/C++

>sonar-scanner -Dsonar.cpp.cppdepend.projectPath={cdproj的路径} -Dsonar.cpp.cppdepend.ruleRunnerPath={CppDependInstallDir\Libs\CppDepend.SonarQube.RuleRunner.exe}

Linux/macOS上的C/C++

>sonar-scanner -Dsonar.cpp.cppdepend.projectPath={cdproj的路径} -Dsonar.cpp.cppdepend.ruleRunnerPath={CppDependInstallDir/libs/CppDepend.SonarQube.RuleRunner}

Windows上的Java

>sonar-scanner -Dsonar.java.jarchitect.projectPath={jdproj的路径} -Dsonar.java.jarchitect.ruleRunnerPath={CppInstallDir\Libs\JArchitect.SonarQube.RuleRunner.exe}

Linux/macOS上的Java

>sonar-scanner -Dsonar.java.jarchitect.projectPath={jdproj的路径} -Dsonar.java.jarchitect.ruleRunnerPath={CppInstallDir/libs/JArchitect.SonarQube.RuleRunner}

提示: 不要在路径中使用任何环境变量,如果路径包含空格字符,请用双引号括起来 -Dsonar.cpp.cppdepend.projectPath="C:\work with space\project.cdproj"

在 SonarQube 界面中浏览 CppDepend 规则问题

  • CppDepend 规则问题现在在 SonarQube 界面中作为普通问题报告。
  • 您可以浏览它、跳转到源代码声明(在 UI 中)、分配它、更改其状态……SonarQube界面中的CppDepend问题

备注:

如果 SonarQube 界面中缺少某些问题:

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

立即试用 CppDepend

开始 14 天免费试用,畅享全部文档功能。无需信用卡。