当前位置: 首页 > 工具软件 > Sonar Runner > 使用案例 >

gradle学习(23)-Sonar runner

郑正文
2023-12-01

前言


上一篇文章学习了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'
	}
}



 类似资料: