3、sonarqube实践

时光总嘲笑我的痴心妄想 提交于 2019-11-26 14:23:44

简称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时,会发生一些莫名的错误。

八、成果

项目信息:

总体信息:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!