SonarQube 代码质量管理工具

SonarQube 代码质量管理工具

什么是 SonarQube ?

SonarQube(简称Sonar)是管理代码质量的开放平台,它可以快速地对代码质量进行分析,并给出合理的解决方案,提高管理效率,保证代码质量。

特点

  • 开源(社区版)
  • 支持超过25种语言
  • 可以通过 Ecplise、IDEA、VS、Vs Code等IDE集成,简便使用
  • 详细的文档
  • 支持多平台 devops 集成。

软件架构

Sonarqube 软件架构图

一个 SonarQube 实例包含三个组件:

  1. SonarQube server:SonarQube 服务,主要包括如下
    • 服务于 SonarQube 用户界面的 web 服务器
    • 基于 Elasticsearch 的搜索服务器
    • 计算引擎负责处理代码分析报告并将其保存到 SonarQube 数据库中
  2. Database:数据库(MySQL、PostgreSQL、Oracle、sql server)
    • 代码扫描期间生成的代码质量和安全性的度量和问题
    • SonarQube 实例配置
  3. Sonar Scanner:代码扫描器,用于分析项目。

SonarQube 解决了什么问题 ?

  1. 不遵循代码标准

    • sonar可以通过PMD,CheckStyle,Findbugs等代码规则检测工具规范代码编写
  2. 潜在的缺陷

    • sonar可以通过PMD,CheckStyle,Findbugs等代码规则检测工具检测出潜在的缺陷
  3. 糟糕的复杂度分布

    • 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
  4. 重复

    • 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方
  5. 注释不足或者过多

    • 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
  6. 缺乏单元测试

    • sonar 可以很方便地统计并展示单元测试覆盖率
  7. 糟糕的设计

    • 通过 sonar 可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则
    • 通过 sonar 可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。

怎么使用 SonarQube ?

  1. 通过 IDE 插件:SonarLint ,实时检测代码问题。

image.png

  1. 通过 DevOps 工具:GitLab、GitHub、Bitbucket, Jenkins, Azure Pipelines 集成使用。

image.png

实际例子: