简称sonar,这里仅针对sonar6.0。php
1)、sonar是一个开源、免费的代码质量管理平台,官方另有收费版本,提供更多的功能及支持。
2)、支持各类语言,含主流的c、c++、object c、swift、java、php、c#、js、html、css、lua等,但c、c++、swift、lua等须要收费或受权,不支持 python。
3)、支持插件开发,官方及第三方插件较为丰富,社区较为发达,版本更新较快,侧面反映了sonar程序遗留问题较多。
4)、能作简单的代码复审,能对问题进行分配及邮件提醒。
5)、sonar内部主要使用restapi做为数据交互方式,具体能够经过http://sonarip:sonarport/web_api查看,便于二次开发。css
#官方文档
http://docs.sonarqube.org/display/SONAR/Documentation
#github主页
https://github.com/SonarQubeCommunity
#google+地址
https://groups.google.com/forum/#!forum/sonarqube
#stackoverflow地址
http://stackoverflow.com/questions/tagged/sonarqubehtml
公司主要采用java、c#开发,少数python、c\c++\objectc项目,因此sonar能知足大部分需求。
咱们对sonar的需求是:但愿sonar能给我提供一个粗略的项目代码质量报表,含违反规则数量、单测数量、单测覆盖度及代码重复度等。java
1)、java采用规则
findbug【所有规则】+google-checkstyle+部分pmd规则。
咱们认为findbugs大部分规则都是有用的,确实能起到减小bug或提升代码质量的目的,因此findbugs规则几乎所有采用,少数特殊规则,根据实际状况作删减。
google-checkstyle大部分规则都是符合实际的,可是如缩进等仍是修改成公司主流ide:idea的默认风格。
pmd中有些规则稍显过期,因此咱们选取部分规则。python
2)、c#采用规则
fxcopc++
规则采用逐步累加方式,咱们要求各项目组在每次累加以前,必须逐步较少触发的规则,并逐步提升单测数量和单元测试覆盖率。git
1)、免费版sonarlint for idea存在服务器违反规则与idea中同步下来的违反规则数量不一致;sonar for vs,只支持vs2015,且没法同步违反规则到vs本地编辑环境中。
2)、c#,不支持方法级别的圈复杂度统计。
3)、c#覆盖度统计,咱们使用opencover,使用vs自带的CodeCoverage,在项目结构特别复杂及fake时,会发生一些莫名的错误。github
项目信息:web
整体信息:swift