build.gradle
project(":project2").sonar.project.language = "groovy"
分析自定义的 Source Sets
默认情况下,Sonar 插件将分析 main source set 里的生产源文件,以及 test source sets 里的测试源文件。它的分析独立于项目的源目录布局。根据需要,可以添加额外的 source sets。
分析自定义的 Source Sets
build.gradle
sonar.project {
sourceDirs += sourceSets.custom.allSource.srcDirs
testDirs += sourceSets.integTest.allSource.srcDirs
}
分析非 Java 语言
要分析非 Java 语言编写的代码,请安装相应的 Sonar 插件,并相应地设置 sonar.project.language :
分析非 Java 语言
build.gradle
sonar.project {
language = "grvy" // set language to Groovy
}
截至 Sonar 3.4,每个项目只可以分析一种语言。不过,在多项目构建中你可以为不同的项目设置不同的语言。
设置自定义的 Sonar 属性
最终,大多数配置都会以被称为 Sonar 属性的键-值对的形式传递给 Sonar 的代码分析器。在 API 文档中的 SonarProperty 注解显示了插件的对象模型的属性是如何映射到相应的 Sonar 属性中的。Sonar 插件提供了 hooks,用于 Sonar 属性传给代码分析器前的后置处理。相同的 hook 可以用来添加额外的属性,并且不会被插件的对象模型所覆盖。
对于全局的 Sonar 属性,可以使用 SonarRootModel 上的 withGlobalProperties hook:
设置自定义的全局属性
build.gradle
sonar.withGlobalProperties { props ->
props["some.global.property"] = "some value"
// non-String values are automatically converted to Strings
props["other.global.property"] = ["foo", "bar", "baz"]
}
对于每个项目的 Sonar 属性,使用 SonarProject 上的 withProjectProperties hook:
设置自定义的项目属性
build.gradle
sonar.project.withProjectProperties { props ->
props["some.project.property"] = "some value"
// non-String values are automatically converted to Strings
props["other.global.property"] = ["foo", "bar", "baz"]
}
Sonar 的可用属性的列表可以在 Sonar 文档中找到。注意,对于大多数的这些属性,Sonar 插件的对象模型具有等效的属性,且没有必要使用 withGlobalProperties 或withProjectProperties 的 hook。对于第三方 Sonar 插件的配置,请参阅插件的文档。
从命令行配置 Sonar 的设置
下面的属性或者可以从命令行中或者是作为 sonarAnalyze 任务的任务参数这两种方式之一来设置。任务参数将覆盖任何在构建脚本中设置的相应值。
- server.url
- database.url
- database.driverClassName
- database.username
- database.password
- showSql
- showSqlResults
- verbose
- forceAnalysis
下面是一个完整的例子:
gradle sonarAnalyze --server.url=http://sonar.mycompany.com --database.password=myPassword --verbose
如果你需要从命令行设置其他属性,你可以使用系统属性来做:
实现自定义命令行属性
build.gradle
sonar.project {
language = System.getProperty("sonar.language", "java")
}
然而,请记住,通常最好是配置在构建脚本中,并在代码控制下。
任务
Sonar 插件向 project 中添加了以下任务。
表 35.1. 声纳插件 - 任务
任务名称 | 依赖于 | 类型 | 描述 |
sonarAnalyze
|
- | sonarAnalyze | 分析项目层次结构,并将结果存储在 Sonar 数据库。 |
标签:Gradle
相关阅读 >>
更多相关阅读请进入《Gradle》频道 >>