前言
上一篇文章学习了Sonar,这篇文章来讲解sonar runner。区别在于sonar runner是将分析的数据上传到数据库中,而sonar则是采用各种方法将数据库中数据组织成不同的形式展现给用户。所以sonar依赖于sonar runner,没有数据也就无法展示。
知识点
1.sonar的版本与兼容性
gradle默认使用的Sonar Runner版本是2.3的,该版本支持Sonar的版本3.0以及更高。但是如果你非要支持3.0以前的(还是不要有这种事发生吧,勇敢的拥抱新的东西不好么),那就需要自己配置了。
2.plugin标识
apply plugin : 'sonar-runner'
3.如何执行
gradle sonarRunner
4.Sonar Runner的配置
与sonar的配置项差不多,只是配置方式不一样而已,这里配置的都是以key/value的形式,而在sonar中是以特殊的属性名赋值的方式。
<pre name="code" class="java">sonarRunner {
sonarProperties {
property "sonar.host.url", "http://localhost:9002/"
property "sonar.jdbc.url", "jdbc:mysql://localhost:3306/sonar"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "sonar"
property "sonar.jdbc.password", "sonar"
}
}
5.版本配置
在第1节中讲了sonar runner默认版本是2.3,当然你可以修改,通过下面语句修改。
sonarRunner {
toolVersion = '2.3' // default
}
6.多项目的构建
这里也和sonar类似,我就直接贴配置方式,不再阐述了。
有全局和私有2种配置,可以为每个子项目配置共同属性,也可以单独拿出来为每一个子项目配置特殊的属性。
为每个项目都设置字符编码为UTF-8
subprojects {
sonarRunner {
sonarProperties {
property "sonar.sourceEncoding", "UTF-8"
}
}
}
为project1设置语言为groovy
project(":project1") {
sonarRunner {
sonarProperties {
property "sonar.language", "grvy"
}
}
}
为project2设置跳过质量管理。
project(":project2") {
sonarRunner {
skipProject = true
}
}
7.自定义sourcesets
sonar也有这些配置,so一笔带过。(为啥都配置呢)
sonarRunner {
sonarProperties {
properties["sonar.sources"] += sourceSets.custom.allSource.srcDirs
properties["sonar.tests"] += sourceSets.integTest.allSource.srcDirs
}
}
8.不止是Java
same as Sonar,就是可以分析其他的语言。上面已经讲过了如何设置语言了。
9.控制执行sonar runner进程
sonar runner和test进程一样,也是一个单独的进程。你可以设置该进程的内存以及系统属性。想要查看都有哪些可以设置的属性,可以在api中查看JavaForkOptions类。
sonarRunner {
forkOptions {
maxHeapSize = '512m'
}
}