一 . SonarQube代码质量检查工具简介
Sonar (SonarQube)是一个开源平台,用于管理源代码的质量.
Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。
支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。
1. 不遵循代码标准(Coding Standards Breach)
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
2. 潜在的缺陷(Bugs and Potential Bugs)
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
3. 糟糕的复杂度分布(Bad Distribution of Complexity)
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
4. 重复(Duplications)
显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。
5. 注释不足或者过多(Not Enough or Too Many Comments)
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
6. 缺乏单元测试(Lack of Unit Tests)
sonar可以很方便地统计并展示单元测试覆盖率。
7. 糟糕的设计
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合。
下面通过以下介绍SonarQube的安装、使用说明。
为什么要选择sonarQube?
个人使用之后认为 : sonarQube的优势如下(相比于阿里编码规约这种市面上常见的类似软件):
1. 更加优秀的图形化界面
基本上通过界面就可以对自己项目的代码状况一目了然
2. 可以查询出其它软件难以定位到的问题
比如 : 可能导致空指针异常的问题 (对象在进行使用前没有加空的判断)
可能导致内存泄漏的问题, 在try catch 块里面,直接使用e.printStackTrace()将堆栈信息打印到内存的
可能导致的漏洞 : 成员变量使用public定义的
还有诸如 : 流等未关闭或者是非正常关闭都能够检测出来!
功能非常强大!!
如何使用?
SonarQube是一款开源的代码质量管理平台,已支持20+ 种编程语言。
拉取镜像,默认都是从 DockerHub 拉取
1 docker pull postgres 拉取数据库
2 docker pull sonarqube 拉取sonarqube
安装完毕后
1 启动postgresql
$ docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres |
2 启动 sonarqube
$ docker run --name sq --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -p 9000:9000 -d sonarqube |
3 打开 http://localhost:9000/ , 点击 "Log in"
登录账号:admin 密码:admin |
启动时间较长,请稍等。
等待即可进入以下界面:
第一次登录会提示你创建一个token,点击即可进入下图所示界面。
可以选择检测 maven / gradle 项目来使用 sonarQube去检测项目
复制灰框中的命令到项目
在你的maven 或 gradle 项目根目录去运行此命令即可。如果报错一般是jdk版本太低,建议使用jdk 1.8 。
如下图为正在检测,当检测完成后进入相应页面即可查看代码审查的状况。