一、使用背景:
代码语言:txt复制 SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。
通过插件形式,可以支持包括 java, C#, C/C , PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
代码语言:txt复制 Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。
1. 不遵循代码标准
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
2. 潜在的缺陷
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷。
3. 糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
4. 重复
显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方。
5. 注释不足或者过多
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降;而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
6. 缺乏单元测试
sonar可以很方便地统计并展示单元测试覆盖率。
7. 糟糕的设计
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则:通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况,检测藕合。
二、SonarQube的安装、配置
1、jdk
2、sonarqube官网:
https://www.sonarqube.org/进行下载
3、SonarQube Scanner扫描分析器:
https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.5.zip
4、mysql数据库:
需要注意点,数据库版本要求;;#----- 5.6<=MySQL _<)~~】
还有数据库的查看mysql默认一次允许写入的包大小:
show global VARIABLES like ‘%max_allowed_packet%‘
Sonarz中数据库配置信息如下:
正常启动后,信息提示如下:可以访问http://localhost:9000/ sonar搭建完毕!!
三、SonarQube的分析、扫描
1、安装必要插件--最重要的是汉化包
2、新建项目进行静态代码扫描
sonar-scanner.bat -D“sonar.projectKey=qixiao" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=105d3da15bc1e355d7a8c290d24b1d0465a571af"
3、生成报告分析
四、SonarQube的总结
为什么要选择SonarQube?
个人使用之后认为 :
SonarQube的优势如下(相比于阿里编码规约这种市面上常见类似软件):
- 更加优秀的图形化界面基本上通过界面就可以对自己项目的代码状况一目了然
- 可以查询出其它软件难以定位到的问题比如 :
2.1.可能导致空指针异常的问题 (对象在进行使用前没有加空的判断)
代码语言:txt复制2.2.可能导致内存泄漏的问题, 在try catch块里面,直接使用e.printStackTrace()将堆栈信息打印到内存的
代码语言:txt复制2.3.可能导致的漏洞 : 成员变量使用public定义的
还有诸如 : 流等未关闭或者是非正常关闭都能够检测出来! 功能非常强大!!
3.可以辅助开发人员往往发现预期以外的问题能够及时避免。
4.针对续代码扫描,以提前一步预防提升代码质量问题。