SonarQube 代码质量管理工具
什么是 SonarQube ?
SonarQube(简称Sonar)是管理代码质量的开放平台,它可以快速地对代码质量进行分析,并给出合理的解决方案,提高管理效率,保证代码质量。
特点:
- 开源(社区版)
- 支持超过25种语言
- 可以通过 Ecplise、IDEA、VS、Vs Code等IDE集成,简便使用
- 详细的文档
- 支持多平台 devops 集成。
软件架构
一个 SonarQube 实例包含三个组件:
- SonarQube server:SonarQube 服务,主要包括如下
- 服务于 SonarQube 用户界面的 web 服务器
- 基于 Elasticsearch 的搜索服务器
- 计算引擎负责处理代码分析报告并将其保存到 SonarQube 数据库中
- Database:数据库(MySQL、PostgreSQL、Oracle、sql server)
- 代码扫描期间生成的代码质量和安全性的度量和问题
- SonarQube 实例配置
- Sonar Scanner:代码扫描器,用于分析项目。
SonarQube 解决了什么问题 ?
-
不遵循代码标准
- sonar可以通过PMD,CheckStyle,Findbugs等代码规则检测工具规范代码编写
-
潜在的缺陷
- sonar可以通过PMD,CheckStyle,Findbugs等代码规则检测工具检测出潜在的缺陷
-
糟糕的复杂度分布
- 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
-
重复
- 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方
-
注释不足或者过多
- 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
-
缺乏单元测试
- sonar 可以很方便地统计并展示单元测试覆盖率
-
糟糕的设计
- 通过 sonar 可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则
- 通过 sonar 可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
怎么使用 SonarQube ?
- 通过 IDE 插件:SonarLint ,实时检测代码问题。
- 通过 DevOps 工具:GitLab、GitHub、Bitbucket, Jenkins, Azure Pipelines 集成使用。
实际例子:
- GitLab 集成:【GitLab + SonarQube 搭建自动代码检测平台】
评论