====== 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 }