简称sonar,这里仅针对sonar6.0。
一、sonar特性
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查看,便于二次开发。
二、sonar目标
三、sonar工作原理
四、sonar架构设计
五、sonar帮助站点
#官方文档
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/sonarqube
六、项目实践
公司主要采用java、c#开发,少数python、c\c++\objectc项目,所以sonar能满足大部分需求。
我们对sonar的需求是:希望sonar能给我提供一个粗略的项目代码质量报表,含违反规则数量、单测数量、单测覆盖度及代码重复度等。
1)、java采用规则
findbug【全部规则】+google-checkstyle+部分pmd规则。
我们认为findbugs大部分规则都是有用的,确实能起到减少bug或提高代码质量的目的,所以findbugs规则几乎全部采用,少数特殊规则,根据实际情况做删减。
google-checkstyle大部分规则都是符合实际的,但是如缩进等还是修改为公司主流ide:idea的默认风格。
pmd中有些规则稍显过时,所以我们选取部分规则。
2)、c#采用规则
fxcop
规则采用逐步累加方式,我们要求各项目组在每次累加之前,必须逐步较少触发的规则,并逐步提高单测数量和单元测试覆盖率。
七、存在的问题
1)、免费版sonarlint for idea存在服务器违反规则与idea中同步下来的违反规则数量不一致;sonar for vs,只支持vs2015,且无法同步违反规则到vs本地编辑环境中。
2)、c#,不支持方法级别的圈复杂度统计。
3)、c#覆盖度统计,我们使用opencover,使用vs自带的CodeCoverage,在项目结构特别复杂及fake时,会发生一些莫名的错误。
八、成果
项目信息:
总体信息:
来源:oschina
链接:https://my.oschina.net/u/2352002/blog/733547