Sonar 탐지 보고서에서 롬복 클래스 제외
최신 Jacoco 플러그인(스냅샷 버전,0.7.10-SNAPSHOT
에는, Lombok 생성 코드를 필터링 하는 새로운 기능이 있습니다(https://github.com/jacoco/jacoco/wiki/FilteringOptions)).필요한 것은, 다음의 주소를 추가하는 것 뿐입니다.lombok.config
저장소의 루트에 다음 파일이 있습니다.
lombok.addLombokGeneratedAnnotation=true
Jacoco 보고서를 내부적으로 생성하면 차이를 알 수 있습니다.그러나 일반 품질 작업이 실행되어 Sonar에 결과를 게시하면 다른(더 나쁜) 결과가 나타납니다.
어째서 지역 보고서와 음파탐지기의 결과가 같지 않은 거죠?회피책이 있나요?
여기 기재한 바와 같이 https://github.com/jacoco/jacoco/pull/513#issuecomment-293176354
필터링은 실행 정보 수집 시(exec 파일 포함)가 아니라 보고서 생성 시(html, xml 등)에 실행됩니다.따라서 xml을 읽는 대신 실행 데이터를 직접 읽는 툴(내부 중간 포맷에 의존하는 것은 일종의 실수이지만 이미 완료된 것은 완료됨)과 자체 보고서(SonarQube, Jenkins 등)를 작성할 수 있습니다.보고서 필터링을 받기 위해 JaCo가 출시되면 JaCo에 대한 의존도를 갱신해야 합니다.릴리즈가 완료되면 다운스트림 프로젝트(특히 위에서 언급한 모든 프로젝트)에 이 사실을 명시적으로 통지합니다.그러니 다시 한 번 - 조금만 참아주세요.이해해 주셔서 감사합니다.
sonar가 exec 파일 대신 최종 보고서를 읽을 방법을 찾지 못했기 때문에, 0.7.10 jacoco 플러그인의 정식 릴리즈와 Sonar 측의 업데이트를 기다릴 필요가 있다고 생각합니다.
------2018년 5월 9일 갱신
새로운 버전이 출시되었고, 나에게 효과가 있음을 확인할 수 있습니다.
사용방법:
- 소나 6.7
- SonarJava 플러그인 5.1.13214
- jacoco maven 플러그인 0.8.1
- lombok.addLombokGeneratedAnnotation=lombok.config의 true
Lombok이 생성한 코드가 무시되었기 때문에 Sonar에 보고되는 커버리지 결과가 훨씬 좋아졌습니다.이 기능은, 「진짜」의 미공개 영역이 무엇인지, 그리고 그것이 위험한지 아닌지를 특정하는 데 큰 도움이 됩니다.
먼저 롬복 버전이 1.16.14 이상인지 확인해야 합니다.
pom.xml:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
<version>1.16.14</version>
</dependency>
그러면 Jacoco 버전이 0.8.0 이상인지 확인해야 합니다.
pom.xml:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.0</version>
<!-- // -->
</plugin>
에 아, 아, 아를 돼요.lombok.config
src
프로젝트의 폴더(폴더에 없음)
lombok.config:
# tells Lombok that this is the root directory and that it shouldn’t search parent directories for more configuration files
config.stopBubbling = true
# tells Lombok to add @lombok.Generated annotation to all generated methods
lombok.addLombokGeneratedAnnotation = true
언급URL : https://stackoverflow.com/questions/47430397/excluding-lombok-classes-from-sonar-coverage-report
'programing' 카테고리의 다른 글
CF7 폼 값을 동적으로 변경하다 (0) | 2023.03.27 |
---|---|
React Js에서 CSS/Jquery calc 함수 사용 (0) | 2023.03.27 |
Spring Boot에서는 org.hibernate는 처리되지 않습니다.예외.제약 위반예외. (0) | 2023.03.27 |
Angular의 .$on()이란JS (0) | 2023.03.27 |
Spring Boot에서 파일 업로드를 위한 임시 디렉토리를 지정하는 방법은 무엇입니까? (0) | 2023.03.22 |