Gradle Sonar Runner 插件


当前第2页 返回上一页

要分析一个项目的层次结构, 需要把 Sonar Runner 插件应用于层次结构的最顶层项目。通常(但不是一定)会是这个 Gradle 构建的根项目。与分析有关的信息作为一个整体,比如服务器和数据库的连接设置,必须在这一个 project 的 sonarRunner 块中进行配置。在命令行上设置的任何 Sonar 属性也会应用到这个 project 中。

全局配置设置

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 块中,可以配置共享子项目之间的配置。

共享的配置设置

build.gradle

subprojects {
    sonarRunner {
        sonarProperties {
            property "sonar.sourceEncoding", "UTF-8"
        }
    }
}  

特定项目的信息在对应的 project 的 sonarRunner 块中配置。

个别配置设置

build.gradle

project
    sonarRunner {
        sonarProperties {
            property "sonar.language", "grvy"
        }
    }
}  

对于一个特定的子项目,要跳过 Sonar 分析,可以设置 sonarRunner.skipProject。

跳过项目分析

build.gradle

project
    sonarRunner {
        skipProject = true
    }
}  

分析自定义的 Source Sets

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

分析自定义的Source Sets

build.gradle

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

分析非 Java 语言

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

分析非 Java 语言

build.gradle

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

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

更多关于配置 Sonar 的属性

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

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

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

从命令行设置 Sonar 属性

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

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

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

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

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

根据项目大小,Sonar Runner 可能需要大量的内存。由于这个和其他(主要是隔离)的原因,最好在一个独立的进程中执行 Sonar Runner。一旦 Sonar Runner 2.1 发布,将提供这个功能,并由 Sonar Runner 插件采用。到那时,Sonar Runner 会在 Gradle 主进程中执行。

任务

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

表 36.4. Sonnar Runner 插件 - 任务

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

标签:Gradle

返回前面的内容

相关阅读 >>

Gradle sonar 插件

Gradle groovy 快速入门

Gradle Gradle 守护进程

Gradle Gradle 插件

Gradle Gradle 命令行的基本使用

Gradle 概述

Gradle scala 插件

Gradle 依赖管理基础

Gradle java 构建入门

Gradle sonar runner 插件

更多相关阅读请进入《Gradle》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...