SonarQube 集成
使用 CppDepend SonarQube 插件增强您的 C/C++ 代码分析
欢迎阅读我们关于集成 CppDepend SonarQube 插件以增强 C++ 代码分析流程的综合指南。CppDepend SonarQube 插件提供与 SonarQube 的无缝集成,SonarQube 是一个广泛用于持续检查代码质量的平台。通过将 CppDepend 的强大功能整合到您的 SonarQube 工作流中,您将受益于改进的代码可维护性、减少的技术债务以及对代码库的宝贵洞察。继续阅读,了解有关使用 CppDepend SonarQube 插件的好处以及如何轻松将其集成到您的开发流程中的更多信息。
CppDepend 提供了一种名为 PRQL 的独特代码查询语言,允许开发人员、设计师和架构师将代码库视为数据库并创建自定义规则。
PRQL 使用户能够合并来自代码度量、依赖关系、API 使用情况和其他模型信息的数据,以建立高度复杂的规则。
通过 PRQL,CppDepend 引入了轻松为 SonarQube 定制代码质量规则的能力,并促进了与 SonarQube 的两种协作方式:
- CppDepend 与 C++ SonarQube 社区插件: 这种推荐的集成允许您同时利用 CppDepend 和 SonarQube Community Plugin 的功能。有关此集成的指导,请参阅 SonarQube社区集成文档。
- 独立模式下的CppDepend插件: 使用此选项,无需安装额外的 C++ SonarQube 插件。有关实现此集成的说明,请参阅 独立 SonarQube 集成文档。
CppDepend 和 SonarQube 的规则集是互补的
CppDepend 和 SonarQube 都是提供基于规则的系统来检测 C/C++ 代码问题的静态分析器。然而,CppDepend 的默认规则集 重叠很少 使用SonarQube规则
基本上,SonarQube 规则擅长分析方法内部发生的事情——代码流,而 CppDepend 规则所基于的 CppDepend 代码模型则针对特定更大规模领域的 360 度视图进行了优化,包括 OOP、依赖关系、度量、破坏性变更、可变性、命名……
具体来说,SonarQube 规则可以警告诸如不需要进行空值检查的引用之类的问题,因为在当前作用域中它不可能为 null,而 CppDepend 可以警告您过于复杂的类或组件,并提供有关如何重构以使代码更简洁、更易于维护的建议。
使 CppDepend 规则系统独树一帜的另一点是 编写自定义规则有多么容易。使用 CppDepend,规则是一个 LINQ 查询,它查询专用于代码质量的代码模型,在 Visual Studio 中实时编辑,并在编辑时实时编译和执行。
具体来说,下面这段代码就是一条完整可用的规则,还能更简单吗?
使用 CppDepend 定义自定义规则时,用户无需创建 Visual Studio 项目、创建源文件、进入编辑/编译/调试循环,也无需维护一个共享、版本控制和集成都很费力的二进制 DLL。
在 CppDepend 中,自定义规则是原始文本,以 XML CDATA 形式嵌入到 CppDepend 项目或规则文件中。此外,文档和修复指南可以作为注释嵌入到规则源代码中。

此外,每条 CppDepend 规则都可以附带额外数据来展示其问题,帮助理解并修复问题。
此外,每条规则可以嵌入两个 C# 公式,用于估算 修复问题的成本 和 让问题不修复的年度成本,也称为 技术债务 和 年利息 问题的。 由于这些公式依赖于修复时真正重要的因素,这使得债务估算更加智能.

最后,使用 CppDepend,即使在大型代码库上,每条规则也能在几毫秒内运行。因此,所有规则都可以在几秒钟内完成(在真实代码库上通常为 2 或 3 秒),无论是在 Visual Studio 还是在持续集成系统中。
好处是,在每次编译后以及签入时,开发人员可以立即了解自基线以来的新问题和已修复问题,以及在已修复或新增技术债务方面的影响。
