SonarQube(sonar)是一个开源平台,用于管理源代码的质量。 SonarQube不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。 SonarQube可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。
(1) 不遵循代码标准
SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
(2) 潜在的缺陷
SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
(3) 糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
(4) 重复
显然程序中包含大量复制粘贴的代码是质量低下的,SonarQube可以展示 源码中重复严重的地方。
(5) 注释不足或者过多
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
(6) 缺乏单元测试
SonarQube可以很方便地统计并展示单元测试覆盖率。
(7) 糟糕的设计
通过SonarQube可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过SonarQube可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
使用SonarQube进行扫描,需要进行环境配置,具体配置方式参看:
https://my.oschina.net/shuming/blog/2052375
具体扫描,配置。
需要到你要扫描的工程根目录下,创建文件:sonar-project.properties。
我配置如下(我用到是公司的php工程):
sonar.projectKey=sonar-runner-simple
sonar.projectName=MyProject
sonar.projectVersion=1.0
sonar.sources=.
sonar.language=php
sonar.sourceEncoding=UTF-8
然后启动SonarQube之后,打开http://localhost:9000/ .
创建一个新工程,点击Generate:
然后再点击continue:
然后进行选择:
最后的生成的命令,需要在命令行cd到我的php工程路径,然后执行该命令:
最后就可以把结果,上传到http://localhost:9000/。
PS:可以在命令行加 "-X" 查看到详细的扫描信息。但是有时又会报错:
ERROR: Error during SonarQube Scanner execution
ERROR: Failed to upload report - 500: An error has occurred. Please contact your administrator
解决办法:修改(或设置)mysql的my.cnf内的max_allowedpacket值,或者直接执行命令:set global max_allowed_packet=1000*1024 *1024 。
然后再重启SonarQube服务(注意:如果是win系统,需要到任务管理器关闭掉全部java.exe进程) 。