Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,目前0.2.1版本兼容 android 2.2以上系统,地址如下:
http://www.wandoujia.com/apps/com.githang.gradledoc
翻译不易,转载请注明本文在CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/46798999
关于我对Gradle的翻译,以Github上的项目上的文档为准。如有发现翻译有误的地方,将首先在以上两个地方更新。因时间精力问题,博客中发表的译文基本不会同步修改。
第三十六章. Sonar Runner 插件
- 自动配置 Sonar Runner
-
可以通过一个正规的 Gradle 任务来执行 Sonar Runner,这使得在任何 Gradle 可用的地方,它都可以用(开发人员构建,CI 服务器等),而无需下载,安装,和维护 Sonar Runner 的安装。
- 通过 Gradle 构建脚本动态配置
-
根据需要,可以利用 Gradle 脚本的所有特性去配置 Sonar Runner。
- 提供了广泛范围的默认配置
-
Gradle 已经有很多 Sonar Runner 成功分析一个项目所需的信息。基于这些信息对 Sonar Runner 进行预配置,减少了许多手动配置的需要。
若要开始,请对要分析的项目配置使用 Sonar Runner 插件。
假设一个本地的 Sonar 服务使用开箱即用的设置启动和运行,则不需要进一步的强制性的配置。执行gradle sonarRunner并等待构建完成,然后打开 Sonar Runner 输出结果的底部所指示的网页。你现在应该能够看到分析结果了。
在执行sonarRunner任务前,所有产生输出以用于 Sonar 分析的需要都需要被执行。通常情况下,它们是编译任务、测试任务和代码覆盖任务。为了满足这些需要,如果应用了java插件,Sonar Runner 插件将从sonarRunner添加一个对 test 的任务依赖。根据需要,可以添加更多的任务依赖。
href="../groovydoc/org/gradle/api/sonar/runner/SonarRunner.html" style="margin:0px;padding:0px;border:0px;font-family:inherit;font-style:inherit;font-variant:inherit;font-weight:inherit;line-height:inherit;vertical-align:baseline;color:rgb( 0 , 112 , 66 );text-decoration:none" rel="noopener noreferrer"> SonarRunner扩展,它允许通过被称为 Sonar 属性 的键/值对配置 Sonar Runner。一个典型的基线配置包括了Sonar 服务器和数据库的连接设置。
示例 36.2. 配置 Sonar 连接设置
build.gradle
sonarRunner {
sonarProperties {
property "sonar.host.url", "http://my.server.com"
property "sonar.jdbc.url", "jdbc:mysql://my.server.com/sonar"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "Fred Flintstone"
property "sonar.jdbc.password", "very clever"
}
}
Sonar Runner 插件利用 Gradle 的对象模型所包含的信息,提供了许多标准的 Sonar 属性的智能默认值。下表总结了这些默认值。注意,对于配置使用了 java-base 或 java 插件的project,有提供另外的默认值。对于一些属性(尤其是服务器和数据库的连接配置),确定留给 Sonar Runner 一个合适的默认值。
表 36.1. 标准 Sonar 属性的 Gradle 默认值
| Property | Gradle 默认值 |
| sonar.projectKey | "$project.group:$project.name" (所分析的层次结构的根项目,否则留给 Sonar Runner 处理) |
| sonar.projectName | project.name |
| sonar.projectDescription | project.description |
| sonar.projectVersion | project.version |
| sonar.projectBaseDir | project.projectDir |
| sonar.working.directory | "$project.buildDir/sonar" |
| sonar.dynamicAnalysis | "reuseReports" |
表 36.2. 配置使用 java-base 插件时另外添加的默认值
| Property | Gradle 默认值 |
| sonar.java.source | project.sourceCompatibility |
| sonar.java.target | project.targetCompatibility |
表 36.2. 配置使用 java 插件时另外添加的默认值
| Property | Gradle 默认值 |
| sonar.sources | sourceSets.main.allSource.srcDirs(过滤为只包含存在的目录) |
| sonar.tests | sourceSets.test.allSource.srcDirs(过滤为只包含存在的目录) |
| sonar.binaries | sourceSets.main.runtimeClasspath (过滤为只包含存在的目录) |
| sonar.libraries | sourceSets.main.runtimeClasspath (过滤为仅包括文件 ;如果有必要会加上 rt.jar) |
| sonar.surefire.reportsPath | test.testResultsDir (如果该目录存在) |
| sonar.junit.reportsPath | test.testResultsDir (如果该目录存在) |
Sonar Runner 插件能够一次分析整个项目的层次结构。它能够在 Sonar 的 web 界面生成一个层次图,该层次图包含了综合的指标且能够深入到子项目中。分析一个项目的层次结果还可以比单独分析每个项目花费更省时间。
要分析一个项目的层次结构, 需要把 Sonar Runner 插件应用于层次结构的最顶层项目。通常(但不是一定)会是这个 Gradle 构建的根项目。与分析有关的信息作为一个整体,比如服务器和数据库的连接设置,必须在这一个 project 的sonarRunner块中进行配置。在命令行上设置的任何 Sonar 属性也会应用到这个 project 中。
示例 36.3. 全局配置设置
build.gradle
sonarRunner {
sonarProperties {
property "sonar.host.url", "http://my.server.com"
property "sonar.jdbc.url", "jdbc:mysql://my.server.com/sonar"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "Fred Flintstone"
property "sonar.jdbc.password", "very clever"
}
}
在subprojects块中,可以配置共享子项目之间的配置。
示例 36.4. 共享的配置设置
build.gradle
subprojects {
sonarRunner {
sonarProperties {
property "sonar.sourceEncoding", "UTF-8"
}
}
}
特定项目的信息在对应的 project 的sonarRunner块中配置。
示例 36.5. 个别配置设置
build.gradle
project
sonarRunner {
sonarProperties {
property "sonar.language", "grvy"
}
}
}
对于一个特定的子项目,要跳过 Sonar 分析,可以设置sonarRunner.skipProject。
默认情况下, Sonar Runner 插件传给project 的main source set 将作为生产源文件,传给project 的test source sets 将作为测试源文件。这个过程与project 的源目录布局无关。根据需要,可以添加额外的 source sets。
要分析非 Java 语言编写的代码,请安装相应的Sonar 插件,并相应地设置sonar.project.language :
示例 36.8. 分析非 Java 语言
build.gradle
sonarRunner {
sonarProperties {
property "sonar.language", "grvy" // set language to Groovy
}
}
截至 Sonar 3.4,每个项目只可以分析一种语言。不过,在多项目构建中你可以为每一个项目分析一种不同的语言。
让我们再详细看看sonarRunner.sonarProperties {}块。正如我们在示例中已经看到的, property()方法允许设置新属性或重写现有的属性。此外,所有已配置到这一点的属性,包括通过 Gradle 预配置的所有属性,还可通过properties访问器进行使用。
在properties map的条目可以使用常见的 Groovy 语法来读取和写入。为了方便它们的操作,这些值值仍然使用它们惯用的类型 (File,List等)。SonarProperties 块在经过评估后,这些值值被转换为字符串,如下所示: 集合的值(递归) 转换为以逗号分隔的字符串,其他所有的值通过调用其tostring ()方法进行转换。
因为sonarProperties块的评估是惰性的,Gradle 的对象模型的属性可以在块中被安全地引用,而无需担心它们还没有被赋值。
Sonar 属性也可以从命令行中设置,通过设置一个系统属性,名称就像正在考虑中的 Sonar 属性。当处理敏感信息 (例如证件),环境信息,或点对点配置时,这会非常有用。
gradle sonarRunner -Dsonar.host.url=http://sonar.mycompany.com -Dsonar.jdbc.password=myPassword -Dsonar.verbose=true
虽然有时当然很有用,但我们建议在 (版本控制的)构建脚本中,能够方便地让每个人都保持大部分的配置。
通过一个系统属性设置的 Sonar 属性值将覆盖构建脚本中设置的任何值(同样的属性名称)。当分析项目的层次结构时,通过系统属性设置的值应用于所分析层次结构的根项目。
Sonar Runner插件向 project 中添加了以下任务。
表 36.4. Sonnar Runner 插件 - 任务
| 任务名称 | 依赖于 | 类型 | 描述 |
sonarRunner {
|
- | sonarRunner {
|
分析项目层次结构,并将结果存储在 Sonar 数据库。 |