企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 前言 上一篇文章学习了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' } } ~~~