programing

Sonar 탐지 보고서에서 롬복 클래스 제외

magicmemo 2023. 3. 27. 21:09
반응형

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.configsrc프로젝트의 폴더(폴더에 없음)

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

반응형