Sonar 技能全解析:从架构到扫描器

嘟嘟网络游戏 手游资讯

Sonar 作为一个用于代码质量管理的开源平台,具备丰富的技能和功能。

一、架构与集成

SonarQube 平台由 4 个组件组成,包括一个 SonarQube 服务器,启动 3 个主要进程,如用于开发人员的 Web 服务器、基于 Elastic Search 的搜索服务器以及负责处理代码分析报告并将其保存在数据库中的计算机引擎服务器。SonarQube 数据库存储着实例配置文件、项目质量快照等。它可以与多种 ALM 工具集成,开发人员在 IDE 中编写代码,使用 SonarLint 进行本地分析,将代码放在常用的代码管理工具中,持续集成服务器触发自动构建并执行 SonarQube 扫描器进行分析,分析报告发送到服务器处理并存储,最后开发人员通过页面审查和管理。

二、代码质量管理维度

从七个维度检测代码质量,包括不遵循代码标准,通过 PMD、CheckStyle、Findbugs 等工具规范代码编写;潜在的缺陷检测,如 NullPointerException 等;糟糕的复杂度分布,复杂度过高会导致开发人员难以理解和全面回归测试;缺乏单元测试,Sonar 可方便统计和展示覆盖率;重复代码检测,避免大面积复制粘贴;注释不足或过多,影响代码可读性;糟糕的设计,可找出循环、包与类的依赖关系等。

三、Sonar-Scanner

Sona

Sonar-Scanner 是 SonarQube 的客户端,用于在本地或 CI/CD 流水线中分析项目代码并将结果发送到服务器。它支持多种编程语言,如 Java、JavaScript、Python、C++等,能识别代码中的潜在问题,如代码异味、漏洞、复杂度和测试覆盖率等。在 Linux 环境下安装和配置 Sonar-Scanner 时,需先确保系统安装了 Java 运行环境。

四、自定义规则

Sonar 并非简单整合不同代码检查工具结果,而是通过插件再加工处理。sonarqube 默认对 Java 的检测规则不一定适合,可自定义 rules。禁用 rules 可在 Rules-Quality Profile-Sonar way Java 中查看并进行操作,sonar 提供 XPath 或 Java 方式扩展,不同语言支持不同方式,如 Java 只支持 Java 方式扩展,具体详见 Support of Custom Rules by Language。

总之,Sonar 技能涵盖架构、集成、代码质量管理及自定义规则等多个方面,为代码质量的提升提供了全面的支持。

0 8