2016-09-08 56 views
3
從FindBugs的插件,XML和HTML報告

現在,我已經在我的build.gradle FindBugs的如下怎樣才能在搖籃

apply plugin: 'findbugs' 
     findbugs { 
      ignoreFailures = true 
     } 
     tasks.withType(FindBugs) { 
      reports { 
       xml.enabled = false 
       html.enabled = true 
      } 
     } 

但是,如果我試圖同時啓用HTML報告(針對開發查看自己的機器上)和XML報告(我的詹金斯CI機器)我得到以下

FindBugs的任務只能啓用一個報告,已啓用但超過 一個報告。你需要禁用所有其中的一個。

是否有某種方式/破解使我能夠同時生成 - 即使通過兩個不同的任務?

回答

1

你也許可以,但在插件的當前狀態,它看起來像你必須定義從一個FindBugs的延伸的獨立的任務,但比標準一個不同的配置。 問題是,您確實會運行兩次FindBugs,並且這可能會導致性能下降,而且代碼體積也不相同。

顯然,你不能使用tasks.withType(FindBugs) { ... }來配置你的任務,你必須按任務名稱,明確做到這一點。

注意:如果您正在運行此功能, Jenkins,你會希望你的build.gradle生成xml報告,並讓Jenkins從xml生成html報告。這樣它不會在你的構建中執行兩次。

1

我通過配置我的搖籃腳本,使其產生的FindBugs任務XML和HTML報告,然後產生依賴於其他兩個任務解決了這個。

def findbugsTask = task('findbugs') { 
    group 'Verification' 
} 

[ 'Html', 'Xml' ].each { reportType -> 
    findbugsTask.dependsOn task("findbugs${reportType}", type: FindBugs) { 
     dependsOn 'compileJavaWithJavac' 
     reports { 
      html.enabled = reportType == 'Html' 
      xml.enabled = reportType == 'Xml' 
     } 
    } 
} 

注意,這將運行兩次FindBugs的工具,它一般不應該是持續集成的問題(除非你的代碼庫是巨大的)。

+0

非常感謝!像很多方法一樣! – cV2