初识Sonar

SonaQube是一个质量管理工具,它主要管理非功能性的需求(所谓的技术债务)的质量。它是通过代码的静态分析和测试覆盖率等历史数据的集中化管理来提供给管理者有用的信息。它除了支持Java还支持其它近20种编程语言(可惜还不支持Perl)。

比较有意思的它采用所谓的SQALE方法论,能够计算技术债务,技术债务率和SQALE评级。技术债务是所有问题代码需要修复的时间总和,每个单项问题都有一个预设的时间,基本是由专家设定的,比如,修复Java中异常处理时直接调用e.printStackTrace()方法大概需要1分钟,如果有十个程序每个平均有5需要修改的地方的话,技术债务就是10*5*1分钟。然后就是技术债务率了,它是项目的技术债务除以完全重写该项目需要的时间。SonarQube默认情况下是按照代码行数乘以30分钟计算出来的。商业版的貌似可以调整计算方法。技术债务率可以用来比较不同规模的项目之间的相对健康程度。有了技术债务率后,SonarQube会设置SQALE评级,A为最佳,B次之。这些指标都会在项目的仪表盘上呈现。以下为实例:


初识Sonar_第1张图片
Gradle和Sonar有很好的整合,如果你的Java项目用了gradle作为构建工具,那么使用Sonar更加如鱼得水了。

以下是单项目的gradle脚本:

apply plugin: 'sonar-runner'
repositories {
    mavenCentral()
}

sonarRunner {
    toolVersion = '2.4'
    sonarProperties {
        property 'sonar.projectName', 'todo'
        property 'sonar.projectDescription', 'A task management app'
        property 'sonar.sourceEncoding', 'UTF-8'
    }
}

// vim: set ai nu nobk expandtab sw=4 tw=72 syntax=groovy :

 然后只要运行gradle sonarRunner或gradle sR即可进行代码分析并把结果及测试覆盖率数据提交的Sonar数据库中去。

你可能感兴趣的:(Sonar)