标签:gradle 翻译 gradle 教程 gradle 构建 sonar插件 gradle sonar
本文由CSDN博客万一博主翻译,其他章节的翻译请参见:
http://blog.csdn.net/column/details/gradle-translation.html
翻译项目请关注Github上的地址:
https://github.com/msdx/gradledoc/tree/1.12。
直接浏览双语版的文档请访问:
http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。
另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,目前0.2.1版本兼容 android 2.2以上系统,地址如下:
http://www.wandoujia.com/apps/com.githang.gradledoc
翻译不易,转载请注明本文在CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/46770471
关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。如有发现翻译有误的地方,将首先在以上两个地方更新。因时间精力问题,博客中发表的译文基本不会同步修改。
你可能会想使用新的Sonar Runner 插件来代替现在这个插件。尤其是因为只有 Sonar Runner 插件支持 Sonar 3.4 及更高的版本。
Sonar 插件提供了对 Sonar,一个基于
web 的代码质量监测平台的集成。该插件添加了sonarAnalyze
task
,用来分析一个project 及子project 都应用了哪个插件。分析结果存储于 Sonar 数据库中。该插件基于Sonar
Runner,并要求是 Sonar 2.11 或更高的版本。
SonarAnalyze
task
是一项需要显式执行的独立任务,不依赖于任何其他 task。除了源代码之外,该 task 还分析了类文件和测试结果文件(如果有)。为获得最佳结果,建议在分析前运行一次完整的构建。在典型的设置中,会每天在构建服务器上运行一次分析。
最低要求是必须配置 Sonar 插件应用于该project。
除非 Sonar 是在本地上运行,并且有默认的配置,否则有必要配置Sonar 服务器及数据库的连接设置。
示例 35.2. 配置 Sonar 连接设置
build.gradle
sonar server { url = "http://my.server.com" } database { url = "jdbc:mysql://my.server.com/sonar" driverClassName = "com.mysql.jdbc.Driver" username = "Fred Flintstone" password = "very clever" } }
或者,可以从命令行设置某些或全部的连接设置 (见第 35.6 节,“从命令行配置 Sonar 设置”)。
Project 设置会决定这个项目将如何进行分析。默认配置非常适合于分析标准 Java 项目,并可以在许多方面进行自定义。
示例 35.3. 配置 Sonar project 设置
build.gradle
sonar
project
coberturaReportPath = file("$buildDir/cobertura.xml")
}
}
在上面的例子中,sonar
,server
,database
和project
块分别配置的是SonarRootModel
, SonarServer
, SonarDatabase
及 SonarProject
类型的对象。可以查阅它们的API
文档以了解更多信息。
Sonar 插件能够一次分析整个项目的层次结构。它能够在 Sonar 的 web 界面生成一个层次图,该层次图包含了综合的指标且能够深入到子项目中。同时,它比单独分析每个项目更快。
要分析项目的层次结构, 需要把 Sonar 插件应用于层次结构的最顶层项目。通常(但不是一定)会是根项目。在该project 中的sonar
块配置的是一个SonarRootModel
类型的对象。它拥有所有全局配置,最重要的服务器和数据库的连接设置。
示例 35.4. 在多项目构建中的全局配置
build.gradle
apply plugin: "sonar" sonar { server { url = "http://my.server.com" } database { url = "jdbc:mysql://my.server.com/sonar" driverClassName = "com.mysql.jdbc.Driver" username = "Fred Flintstone" password = "very clever" } }
层次结构中的每个项目都有其自身的项目配置。共同的值可以在父构建脚本中进行设置。
在子项目中的sonar
块配置的是一个SonarProjectModel
类型的对象。
这些 Projects 也可以单独配置。例如,设置 skip
属性为true
以防止一个项目(和它的子项目)被分析。跳过的项目将不会显示在
Sonar 的 web 界面中。
另一种典型的各个项目配置是配置要分析的编程语言。注意,Sonar 只能分析每个项目的一种语言。
当一次只设置一个属性时,等效属性的语法更加简洁:
默认情况下,Sonar 插件将分析main
source
set 里的生产源文件,以及test
source
sets 里的测试源文件。它的分析独立于项目的源目录布局。根据需要,可以添加额外的 source sets。
要分析非 Java 语言编写的代码,请安装相应的Sonar
插件,并相应地设置sonar.project.language
:
截至 Sonar 3.4,每个项目只可以分析一种语言。不过,在多项目构建中你可以为不同的项目设置不同的语言。
最终,大多数配置都会以被称为 Sonar 属性的键-值对的形式传递给 Sonar 的代码分析器。在 API 文档中的 SonarProperty
注解显示了插件的对象模型的属性是如何映射到相应的
Sonar 属性中的。Sonar 插件提供了hooks,用于 Sonar 属性传给代码分析器前的后置处理。相同的hook 可以用来添加额外的属性,并且不会被插件的对象模型所覆盖。
对于全局的 Sonar 属性,可以使用SonarRootModel
上的 withGlobalProperties
hook:
示例 35.11. 设置自定义的全局属性
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:
示例 35.12. 设置自定义的项目属性
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 插件的配置,请参阅插件的文档。
下面的属性或者可以从命令行中或者是作为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
如果你需要从命令行设置其他属性,你可以使用系统属性来做:
示例 35.13. 实现自定义命令行属性
build.gradle
sonar.project { language = System.getProperty("sonar.language", "java") }
然而,请记住,通常最好是配置在构建脚本中,并在代码控制下。
Sonar 插件向project 中添加了以下任务。
表 35.1. 声纳插件 - 任务
任务名称 | 依赖于 | 类型 | 描述 |
sonarAnalyze |
- |
sonarAnalyze |
分析项目层次结构,并将结果存储在 Sonar 数据库。 |
Gradle 1.12用户指南翻译——第三十五章. Sonar 插件
标签:gradle 翻译 gradle 教程 gradle 构建 sonar插件 gradle sonar
原文地址:http://blog.csdn.net/maosidiaoxian/article/details/46770471