邂逅SoarQube:
1、人工代码审查费时费力。
2、美国老是使用拖拽式声呐(sonar)在中国周边海域窥视。
3、SonarQube开源且自搭环境,可自由掌控。
以上有点牵强,不管怎么说,反正现在已经选择了SonarQube,就用好它吧。😊
SonarQube是一个开源的代码质量管理系统,与当今众多的代码质量管理工具相比,SonarQube更具有特色和竞争力,其优势主要体现为:它是一个开源的代码质量管理系统,支持 25+ 种语言,可以通过使用插件机制与 eclipse 和 JIRA 等其他外部工具集成,从而实现了对代码的质量的全面自动化分析和管理。
SonarQube的主要特性:
1、通过插件扩展
支持新的编程语言、添加规则引擎、计算更复杂的度量指标,这些都可以借助强大的插件扩展机制。目前已经有超过50个插件可用。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
2、支持多种编程语言
借助插件,目前已经支持超过25+种的编程语言,包括:Java,C#, C/C++, PL/SQL, Cobol, ABAP, Objective-C等。
3、集成CI
同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用Sonar
4、围绕着代码质量
SonarQube是一个Web应用程序(B/S)。规则、警告、例外、设置……都可以在线配置。通过自己的数据库,SonarQube不仅仅是展示各项指标的综合结果,同时也结合历史质量数据。
5、国际化
Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
SonarQube的主要作用:
通过sonar可以有效检测以下在程序开发过程中的七大问题:
Developers’ Seven Deadly Sins
1、潜在的bug(Bugs and Potential Bugs)
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug。
2、违反代码标准(Coding Standards Breach)
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
3、重复代码(Duplications)
显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方。
4、单元测试缺失(Lack of Unit Tests)
sonar可以很方便地统计并展示单元测试覆盖率。
5、糟糕的复杂度分布(Bad Distribution of Complexity)
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
6、糟糕的设计(Spaghetti Design)
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系。
通过sonar可以检测自定义的架构规则。
通过sonar可以管理第三方库。
通过sonar可以利用LCOM4检测单个任务规则的应用情况。
通过sonar检测耦合。
7、缺乏足够多的注释(Not Enough or Too Many Comments)
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
SonarQube架构以及集成工作流:
详情请参考:https://docs.sonarqube.org/display/SONAR/Architecture+and+Integration
SonarQube安装:
安装前置条件:
更多详情请参考:https://docs.sonarqube.org/display/SONAR/Requirements
安装JDK:
过去Mac上的Java都是由Apple自己提供,只支持到Java 6,并且OSX 10.7开始系统并不自带(而是可选安装)(原自带的是1.6)。后来Apple加入OpenJDK继续支持 Java 6,而 Java 7 将由Oracle负责提供。
在终端中输入java -version可查看当前JDK版本信息,如果还没安装任一JDK,就会提示安装,点击后会跳到oralce java的下载网页。
安装包(注意都是下载mac下的dmg安装包):
JDK 1.6:http://support.apple.com/kb/DL1572
JDK 1.7&1.8:http://www.oracle.com/technetwork/java/javase/downloads/index.html
安装:
双击dmg安装包即可安装。
最终安装目录(版本号根据情况略有不同):
JDK 1.6:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk
JDK 1.7&1.8:
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk
MAC下安装多版本JDK和切换几种方式:
通过.bash_profile
修改Java环境变量。
安装MySQL:
方式一:使用安装包安装
下载地址:https://downloads.mysql.com/archives/community/
双击安装
一路向下,记得保存最后弹出框中的密码(它是你mysql root账号的密码)
安装成功还需要额外配置一下:
1、进入系统偏好设置,点击mysql
2、开启mysql服务
3、配置mysql环境变量
在命令行输入mysql -uroot -p
命令会提示没有commod not found,此时还需要将mysql加入系统环境变量。
设置完成后需要使bash_profile
生效:命令行输入source ~/.bash_profile。
通过mysql -uroot -p登录mysql了,会让你输入密码,密码就是上图显示的账号密码。
登录成功后,你可以通过下面的命令修改密码:
我的mysql密码已经修改为:12345678
此时登录mysql如下图:
方式二:使用homebrew安装mysql(未完待续)
安装SonarQube:
方式一:使用homebrew安装:
正确启动SonarQube姿势:
通过homebrew安装程序可以同时在usr/local/Cellar或者usr/local/opt内找到,通过实践证明,opt中的包只是Cellar中的引用,包的真正的物理存放地址应该是Cellar。这一点其实对我们没有什么影响,想要表明的是:如果修改包的内部一些配置文件,在这两个地方找到修改是一样的。
现在我们要来找到sonar.properties,修改port端口,如下所示:
完成以上修改,并正确启动SonarQube,在浏览器中输入:localhost:9999就可以打开SonarQube Server,如下图所示:
上图是未登录状态,登录账号和密码也可以通过sonar.properties修改,SonarQube默认的账号和密码为:admin、admin。
下面开始安装SonarQube插件,到本文截止时间,SonarQube支持58种插件。
参考:
https://www.sonarqube.org
https://docs.sonarqube.org/display/HOME/SonarQube+Platform