代码质量检查之利器—SonarQube
打开SonarQube的官网,首先看到的就是一行英文Title:Code Quality and Security。SonarQube允许所有开发人员编写更干净、更安全的代码。(SonarQube empowers all developers to write cleaner and safer code.)
SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持Java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测。
SonarQube特性
持续检查
- 项目整体的健康程度
项目的主页面会给出,项目整体的Bugs、Vulnerabilities、Code Smells
- 专注于漏洞
water-leak-paradigm可以有效的管理代码质量:新特性,增加的,改变的
(water-leak-paradigm是sonarqube研究的一种代码管理方法)
在项目监测报告中,需要密切关注:New Bugs、New Vulnerabilities
- 实施质量阈值
在团队项目中,可以设置质量阈值(Quality Gate),用于监管质量
- 分支分析
确保干净的代码才会被合并到主分支中
七个维度检测代码质量
- 复杂度分布(Complexity):代码复杂度过高将难以理解
- 重复代码(Duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方
- 单元测试统计(Unit Tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
- 代码规则检查(Coding Rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范
- 注释率(Comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
- 潜在的Bug(Potential Bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug
- 结构与设计(Architecture & Design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度
灵活的配置方式
- 用户本地使用IDE的插件进行代码分析
- 用户上传到源代码版本控制服务器
- 持续集成,使用Sonar Scanner进行扫描
- 将扫描结果上传到SonarQube服务器
- SonarQube server将结果写入db
- 用户通过web ui查看扫描结果
- SonarQube导出结果到其他需要的服务