三、sonarqube实践

简称sonar,这里仅针对sonar6.0。php

1、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查看,便于二次开发。css

2、sonar目标

3、sonar工做原理

4、sonar架构设计

5、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/sonarqubehtml


6、项目实践

    公司主要采用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

7、存在的问题

    1)、免费版sonarlint for idea存在服务器违反规则与idea中同步下来的违反规则数量不一致;sonar for vs,只支持vs2015,且没法同步违反规则到vs本地编辑环境中。
    2)、c#,不支持方法级别的圈复杂度统计。
    3)、c#覆盖度统计,咱们使用opencover,使用vs自带的CodeCoverage,在项目结构特别复杂及fake时,会发生一些莫名的错误。github

8、成果

项目信息:web

整体信息:swift

相关文章
相关标签/搜索