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 jdepend 插件

Gradle Gradle 守护进程

Gradle groovy 插件

Gradle ear 插件

Gradle osgi 插件

GradleGradle 中调用 ant

Gradle web 工程构建

Gradle jacoco 插件

Gradle sonar 插件

Gradle findbugs 插件

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



打赏

取消

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

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

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

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

评论

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