2014-06-06 130 views
1

我想弄清楚如何從Jenkins發佈的jacoco生成的代碼覆蓋率報告中排除文件夾列表。如何讓Jenkins從代碼覆蓋範圍中排除整個文件夾?

似乎可以排除類,但不是文件夾,這對我來說很煩人,因爲我已經開始在線支付系統中使用一個相當大的庫。運行這些單元測試意味着在該平臺上不斷創建測試帳戶,並且不得不再次刪除它們。詹金斯的每一條齒都跑着。

而將排除的文件夾比排除每一個類要簡單得多。

回答

0

通過指定這樣sonar.jacoco.excludes參數排除從聲納的分析類:

sonar.jacoco.excludes=*/exceptions/*:*/dto/* 
3

通過更改你需要添加到「例外」字段中輸入信息的詹金斯JaCoCo插件配置排除整個目錄。

例如,如果要排除名爲任何目錄下的任何文件,「測試」,你會添加以下排除:

** /測試/ **

請記住,如果你想要添加多個排除項,您必須用逗號分隔每個排除項,並且不得有空格(由於插件存在錯誤)。

這裏是我的JaCoCo插件配置: Example JaCoCo Plugin Configuration

+1

我看到你的配置映像,指定了多個班級地點。我認爲你也可以回答http://stackoverflow.com/questions/42265838/how-to-have-code-coverage-in-jenkins-with-jacoco-and-multiple-modules。我會幫你的。 – xploreraj

+1

謝謝指出! – lax1089

0

如果您使用的管道和Jenkinsfile您可以使用以下作爲設定的例子(假設gradle這個):

stage("Check code quality and coverage") { 
      steps{ 
      sh "./gradlew jacocoTestReport sonarqube -x check"    
      step([$class: 'JacocoPublisher', 
        exclusionPattern: '**/*Exception*,**/*Configuration*,**/ApiApplication*,**/*Test*']) 
      } 
    } 

值得注意的是這裏是排除模式在多個排除模式之間以逗號分隔並且不含空格。

看到的潛在設置的完整列表的最簡單的方法就是看代碼:

https://github.com/jenkinsci/jacoco-plugin/blob/master/src/main/java/hudson/plugins/jacoco/JacocoPublisher.java

並檢查出@ DataBoundSetter的

public JacocoPublisher() { 
    this.execPattern = "**/**.exec"; 
    this.classPattern = "**/classes"; 
    this.sourcePattern = "**/src/main/java"; 
    this.inclusionPattern = ""; 
    this.exclusionPattern = ""; 
    this.skipCopyOfSrcFiles = false; 
    this.minimumInstructionCoverage = "0"; 
    this.minimumBranchCoverage = "0"; 
    this.minimumComplexityCoverage = "0"; 
    this.minimumLineCoverage = "0"; 
    this.minimumMethodCoverage = "0"; 
    this.minimumClassCoverage = "0"; 
    this.maximumInstructionCoverage = "0"; 
    this.maximumBranchCoverage = "0"; 
    this.maximumComplexityCoverage = "0"; 
    this.maximumLineCoverage = "0"; 
    this.maximumMethodCoverage = "0"; 
    this.maximumClassCoverage = "0"; 
    this.changeBuildStatus = false; 
    this.deltaInstructionCoverage = "0"; 
    this.deltaBranchCoverage = "0"; 
    this.deltaComplexityCoverage = "0"; 
    this.deltaLineCoverage = "0"; 
    this.deltaMethodCoverage = "0"; 
    this.deltaClassCoverage = "0"; 
    this.buildOverBuild = false; 
} 
相關問題