2014-06-06 3 views
1

저는 Jenkins가 시작한 jacoco에 의해 생성 된 코드 커버리지 보고서에서 폴더 목록을 제외하는 방법을 알아 내려고하고 있습니다.코드 범위에서 전체 폴더를 제외하도록 Jenkins를 얻는 방법?

온라인 지불 시스템을 위해 꽤 큰 라이브러리를 사용하기 시작하면서 클래스를 제외 할 수는 있지만 폴더가 아닌 것은 나를 괴롭게합니다. 단위 테스트를 실행한다는 것은 해당 플랫폼에서 지속적으로 테스트 계정을 만들고 다시 삭제해야한다는 것을 의미합니다. 젠킨스가 일거수 일때.

그리고 클래스를 하나씩 제외하는 것보다 폴더를 제외시키는 것이 훨씬 간단합니다.

답변

0

은 다음과 같이 sonar.jacoco.excludes 매개 변수를 지정하여 수중 음파 탐지기 분석 클래스를 제외 :

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

당신이 '제외'필드에 항목을 추가해야 젠킨스 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*']) 
      } 
    } 

여기

내 JaCoCo 플러그인 구성입니다 exclusionPattern은 쉼표로 구분되며 여러 제외 패턴 사이에는 공백이 없습니다.입니다.

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; 
} 
관련 문제