====== Jenkins Jacoco Plugin ======
* [[https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin|Jenkins JaCoCo Plugin]]
* 커버리지율에 따라 빌드를 실패로 간주하게 설정함으로써 점진적으로 커버리지를 높여갈 수 있다.
* Plugin의 각종 Path 설정에 존재하지 않는 디렉토리를 지정할 경우 다음 오류가 발생할 수 있다. Path 값들이 올바로 설정됐는지 확인 해야 한다.
''Caused: java.lang.RuntimeException: While reading class directory: 경로../jacoco/classes''
===== 설정 =====
* ''%%Path to class directories (e.g.: **/target/classDir, **/classes)%%'' 에서 ''%%**/build/classes%%'' 형태로 클래스들이 있는 디렉토리를 지정하고
* ''%%Inclusions (e.g.: **/*.class)%%'' 와 ''%%Exclusions (e.g.: **/*Test*.class)
%%''는 위 디렉토리 하위의 클래스들에 대한 조건을 지정한다. ''%%**/*.class%%'', ''%%**/*Test.class%%''
{{:ci:jenkins:스크린샷_2021-04-05_15-25-02.png|}}
====== Pipeline ======
* [[ci:jenkins:pipeline|Jenkins Pipeline]]으로 사용하기 예
* 테스트가 불필요한 클래스들에 대한 커버리지 리포트를 제거하려면 ''exclusionPattern''을 ant 패턴으로지정해준다.
* 여기서 ''inclusionPattern/exclusionPattern'' 은, ''build'' 디렉토리를 기준으로 한다. 소스 디렉토리가 아니다. Gradle의 경우 ''sourceSet''의 이름이 디렉토리가 된다.
steps {
jacoco execPattern: '**/build/jacoco/*.exec',
classPattern: '**/build/classes/java,**/build/classes/groovy',
inclusionPattern: '**/*.class',
exclusionPattern: '**/test/**,**/integrationTest**,**/*Test.class,**/Q*.class,**/config/**/*.class',
sourcePattern: '**/src/main/java',
sourceInclusionPattern: '**/*.java',
changeBuildStatus: true,
maximumBranchCoverage: params.MINIMUM_BRANCH_COVERAGE,
minimumBranchCoverage: params.MINIMUM_BRANCH_COVERAGE,
maximumLineCoverage: params.MINIMUM_LINE_COVERAGE,
minimumLineCoverage: params.MINIMUM_LINE_COVERAGE
}