Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文由CSDN博客万一博主翻译,其他章节的翻译请参见翻译项目请关注Github上的地址

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 进行预配置,减少了许多手动配置的需要。

36.1. 插件状态和兼容性

36.2. 入门

若要开始,请对要分析的项目配置使用 Sonar Runner 插件。

示例 36.1. 配置使用 Sonar Runner 插件

build.gradle

apply plugin: "sonar-runner"

假设一个本地的 Sonar 服务使用开箱即用的设置启动和运行,则不需要进一步的强制性的配置。执行gradle sonarRunner并等待构建完成,然后打开 Sonar Runner 输出结果的底部所指示的网页。你现在应该能够看到分析结果了。

在执行sonarRunner任务前,所有产生输出以用于 Sonar 分析的需要都需要被执行。通常情况下,它们是编译任务、测试任务和代码覆盖任务。为了满足这些需要,如果应用了java插件,Sonar Runner 插件将从sonarRunner添加一个对 test 的任务依赖。根据需要,可以添加更多的任务依赖。

36.3. 配置 Sonar Runner

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 属性的完整列表,请参阅

 

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 (如果该目录存在)

36.4. 分析多项目构建

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

示例 36.6. 跳过项目分析

build.gradle

project
    sonarRunner {
        skipProject = true
    }
}

36.5. 分析自定义的Source Sets

默认情况下, Sonar Runner 插件传给project 的main source set 将作为生产源文件,传给project 的test source sets 将作为测试源文件。这个过程与project 的源目录布局无关。根据需要,可以添加额外的 source sets。

示例 36.7. 分析自定义的Source Sets

build.gradle

sonarRunner {
    sonarProperties {
        properties["sonar.sources"] += sourceSets.custom.allSource.srcDirs
        properties["sonar.tests"] += sourceSets.integTest.allSource.srcDirs
    }
}

36.6. 分析非 Java 语言

要分析非 Java 语言编写的代码,请安装相应的Sonar 插件,并相应地设置sonar.project.language :

示例 36.8. 分析非 Java 语言

build.gradle

sonarRunner {
    sonarProperties {
        property "sonar.language", "grvy" // set language to Groovy
    }
}

截至 Sonar 3.4,每个项目只可以分析一种语言。不过,在多项目构建中你可以为每一个项目分析一种不同的语言。

36.7。 更多关于配置 Sonar 的属性

让我们再详细看看sonarRunner.sonarProperties {}块。正如我们在示例中已经看到的, property()方法允许设置新属性或重写现有的属性。此外,所有已配置到这一点的属性,包括通过 Gradle 预配置的所有属性,还可通过properties访问器进行使用。

properties map的条目可以使用常见的 Groovy 语法来读取和写入。为了方便它们的操作,这些值值仍然使用它们惯用的类型 (FileList等)。SonarProperties 块在经过评估后,这些值值被转换为字符串,如下所示: 集合的值(递归) 转换为以逗号分隔的字符串,其他所有的值通过调用其tostring ()方法进行转换。

因为sonarProperties块的评估是惰性的,Gradle 的对象模型的属性可以在块中被安全地引用,而无需担心它们还没有被赋值。

36.8. 从命令行设置 Sonar 属性。

Sonar 属性也可以从命令行中设置,通过设置一个系统属性,名称就像正在考虑中的 Sonar 属性。当处理敏感信息 (例如证件),环境信息,或点对点配置时,这会非常有用。

gradle sonarRunner -Dsonar.host.url=http://sonar.mycompany.com -Dsonar.jdbc.password=myPassword -Dsonar.verbose=true

虽然有时当然很有用,但我们建议在 (版本控制的)构建脚本中,能够方便地让每个人都保持大部分的配置。

通过一个系统属性设置的 Sonar 属性值将覆盖构建脚本中设置的任何值(同样的属性名称)。当分析项目的层次结构时,通过系统属性设置的值应用于所分析层次结构的根项目。

36.9. 在一个单独的进程中执行 Sonar Runner

36.10. 任务

Sonar Runner插件向 project 中添加了以下任务。

表 36.4. Sonnar Runner 插件 - 任务

任务名称 依赖于 类型 描述
sonarRunner { - sonarRunner { 分析项目层次结构,并将结果存储在 Sonar 数据库。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
Java 开发工具 Android开发
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
518 1
|
Java API 项目管理
Java一分钟之-Gradle插件开发:自定义构建逻辑
【6月更文挑战第5天】Gradle插件开发详解:从入门到发布。文章介绍如何创建自定义插件,强调依赖管理、任务命名和配置阶段的理解。示例代码展示插件实现及避免常见问题的方法。最后,讨论插件的发布与共享,助你提升构建效率并贡献于开发者社区。动手实践,打造强大Gradle插件!
328 3
|
存储 缓存 Java
Gradle笔记 八 Gradle 插件(二)
Gradle笔记 八 Gradle 插件
281 0
|
Java
Gradle笔记 八 Gradle 插件(一)
Gradle笔记 八 Gradle 插件
374 0
|
IDE Java 应用服务中间件
以Gradle插件的方式为Java web项目启动Tomcat
在社区版IntelliJ IDEA除了用SmartTomcat,还有什么方式可以在可调试的情况下启动Tomcat呢,来试试com.bmuschko.tomcat插件吧
783 0
以Gradle插件的方式为Java web项目启动Tomcat
|
人工智能 移动开发 Java
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
3964 0
Android Studio插件版本与Gradle 版本对应关系
|
存储 Java Android开发
Android 开发 - 充分利用Gradle
Android 开发 - 充分利用Gradle
440 2
|
Android开发
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
|
9月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
622 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Android开发
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md

热门文章

最新文章

推荐镜像

更多