在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 物聯(lián)網/ Sonar 插件
問題反饋
Gradle 插件
Scala 插件
Gradle 命令行的基本使用
任務詳述
安裝
概述
教程-雜七雜八
構建環(huán)境
依賴管理基礎
使用 Gradle 圖形用戶界面
使用文件
CodeNarc 插件
Sonar 插件
Groovy 插件
Sonar Runner 插件
OSGi 插件
Ear 插件
Gradle 守護進程
Java 插件
簡介
構建基礎
FindBugs 插件
Groovy 快速入門
JaCoCo 插件
PMD 插件
War 插件
Checkstyle 插件
日志
Java 構建入門
Jetty 插件
從 Gradle 中調用 Ant
標準的 Gradle 插件
Web 工程構建
JDepend 插件
編寫構建腳本

Sonar 插件

你可能會想使用新的 Sonar Runner 插件來代替現(xiàn)在這個插件。尤其是因為只有 Sonar Runner 插件支持 Sonar 3.4 及更高的版本。

Sonar 插件提供了對 Sonar,一個基于 web 的代碼質量監(jiān)測平臺的集成。該插件添加了sonarAnalyze task ,用來分析一個 project 及子 project 都應用了哪個插件。分析結果存儲于 Sonar 數(shù)據(jù)庫中。該插件基于 Sonar Runner,并要求是 Sonar 2.11 或更高的版本。

SonarAnalyze task 是一項需要顯式執(zhí)行的獨立任務,不依賴于任何其他 task。除了源代碼之外,該 task 還分析了類文件和測試結果文件(如果有)。為獲得最佳結果,建議在分析前運行一次完整的構建。在典型的設置中,會每天在構建服務器上運行一次分析。

用法

最低要求是必須配置 Sonar 插件應用于該 project。

配置使用 Sonar 插件

build.gradle

apply plugin: "sonar"  

除非 Sonar 是在本地上運行,并且有默認的配置,否則有必要配置 Sonar 服務器及數(shù)據(jù)庫的連接設置。

配置 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"
    }
}  

或者,可以從命令行設置某些或全部的連接設置。

Project 設置會決定這個項目將如何進行分析。默認配置非常適合于分析標準 Java 項目,并可以在許多方面進行自定義。

配置 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 類型的對象。它擁有所有全局配置,最重要的服務器和數(shù)據(jù)庫的連接設置。

在多項目構建中的全局配置

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"
    }
}   

層次結構中的每個項目都有其自身的項目配置。共同的值可以在父構建腳本中進行設置。

多項目構建中的共同項目配置

build.gradle

subprojects {
    sonar
        project
            sourceEncoding = "UTF-8"
        }
    }
}  

在子項目中的 sonar 塊配置的是一個 SonarProjectModel 類型的對象。

這些 Projects 也可以單獨配置。例如,設置 skip 屬性為 true 以防止一個項目(和它的子項目)被分析。跳過的項目將不會顯示在 Sonar 的 web 界面中。

多項目構建中的單獨項目配置

build.gradle

project
    sonar
        project
            skip = true
        }
    }
}  

另一種典型的各個項目配置是配置要分析的編程語言。注意,Sonar 只能分析每個項目的一種語言。

配置語言分析

build.gradle

project
    sonar
        project
            language = "groovy"
        }
    }
}  

當一次只設置一個屬性時,等效屬性的語法更加簡潔:

使用屬性語法

build.gradle

project(":project2").sonar.project.language = "groovy"  

分析自定義的 Source Sets

默認情況下,Sonar 插件將分析 main source set 里的生產源文件,以及 test source sets 里的測試源文件。它的分析獨立于項目的源目錄布局。根據(jù)需要,可以添加額外的 source sets。

分析自定義的 Source Sets

build.gradle

sonar.project {
    sourceDirs += sourceSets.custom.allSource.srcDirs
    testDirs += sourceSets.integTest.allSource.srcDirs
}  

分析非 Java 語言

要分析非 Java 語言編寫的代碼,請安裝相應的 Sonar 插件,并相應地設置 sonar.project.language :

分析非 Java 語言

build.gradle

sonar.project {
    language = "grvy" // set language to Groovy
}  

截至 Sonar 3.4,每個項目只可以分析一種語言。不過,在多項目構建中你可以為不同的項目設置不同的語言。

設置自定義的 Sonar 屬性

最終,大多數(shù)配置都會以被稱為 Sonar 屬性的鍵-值對的形式傳遞給 Sonar 的代碼分析器。在 API 文檔中的 SonarProperty 注解顯示了插件的對象模型的屬性是如何映射到相應的 Sonar 屬性中的。Sonar 插件提供了 hooks,用于 Sonar 屬性傳給代碼分析器前的后置處理。相同的 hook 可以用來添加額外的屬性,并且不會被插件的對象模型所覆蓋。

對于全局的 Sonar 屬性,可以使用 SonarRootModel 上的 withGlobalProperties hook:

設置自定義的全局屬性

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:

設置自定義的項目屬性

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 文檔中找到。注意,對于大多數(shù)的這些屬性,Sonar 插件的對象模型具有等效的屬性,且沒有必要使用 withGlobalProperties 或withProjectProperties 的 hook。對于第三方 Sonar 插件的配置,請參閱插件的文檔。

從命令行配置 Sonar 的設置

下面的屬性或者可以從命令行中或者是作為 sonarAnalyze 任務的任務參數(shù)這兩種方式之一來設置。任務參數(shù)將覆蓋任何在構建腳本中設置的相應值。

  • 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  

如果你需要從命令行設置其他屬性,你可以使用系統(tǒng)屬性來做:

實現(xiàn)自定義命令行屬性

build.gradle

sonar.project {
    language = System.getProperty("sonar.language", "java")
}  

然而,請記住,通常最好是配置在構建腳本中,并在代碼控制下。

任務

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

表 35.1. 聲納插件 - 任務

任務名稱 依賴于 類型 描述
sonarAnalyze - sonarAnalyze 分析項目層次結構,并將結果存儲在 Sonar 數(shù)據(jù)庫。
上一篇:標準的 Gradle 插件下一篇:Jetty 插件