Jenkins 的 Warnings Next Generation plugin,用於收集靜態分析工具報告的編譯器警告或問題,並將其結果輸出為可視化報表。
該套件內建了近百個靜態分析工具(包括幾個不同編譯器)的支援。
參閱支援的 report 格式列表: https://github.com/jenkinsci/warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md
它取代了 Jenkins 靜態分析相關套件,存在已有十多年過時的 plugin 如下:
- Android Lint
- CheckStyle
- Dry
- FindBugs
- PMD
- Warnings
- Static Analysis Utilities
- Static Analysis Collector Plugins
- Task Scanner
套件官方網址: https://plugins.jenkins.io/warnings-ng
基本使用方式
根據不同的靜態分析,搭配不同的語言會有不同的設置方式,以 PMD 搭配 Dry(檢查程式碼重複) 為例,在 maven 專案之 pom.xml 加入下面設置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.6</version>
<configuration>
<linkXref>true</linkXref>
<sourceEncoding>utf-8</sourceEncoding>
<minimumTokens>20</minimumTokens>
<format>xml</format>
<failOnViolation>false</failOnViolation>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>cpd</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
透過該設置之後可以直接運行下面指令檢查:
mvn pmd:cpd-check
其中 <minimumTokens>20</minimumTokens>
可以讓你設置最小重覆的字數,以便設定檢查範圍
運行完檢查後,我們可以透過 ${project_home}/target/site/cpd.html
來查看報表
若要透過套件產生 report 所需的 xml 檔案路徑為 ${project_home}/target/cpd.xml
接著進行 Jenkins jobs 的設置,記得先安裝 Warnings Next Generation 套件,我們可以在 job 進行報表設置。
第一步設置 job 執行 shell:
第二步設置報表產出:
一旦執行成功,將可以看到下面的圖表產出
若有多組靜態檢查的情狀,在 job 首頁將會看到詳細的趨勢圖
每一次運行 job 時,讓 Jenkins 為你的專案進行把關。
官方可支援的 report 非常豐富,因為整合為同一個套件,相關的設置的方式大同小異,早期套件不再支援 Jenkins 2.0 之 pipeline 的建置語法,使用 Warnings Next Generation plugin 則可以直接使用於 pipeline 之建置,詳細可參考官方的文件說明:
https://github.com/jenkinsci/warnings-ng-plugin/blob/master/doc/Documentation.md
及在 pipeline script 使用上,詳細參數說明