簡體   English   中英

使用Lombok,Gradle,Jacoco和Sonar過濾覆蓋范圍

[英]Filtering coverage with Lombok, Gradle, Jacoco and Sonar

我在JaCoCo 0.8.0和Java的SonarJava 5.0.1的Java項目中使用Gradle 4.4。

我有一個用龍目島的@Value@Builder注釋的類。

我在build.gradle中的JaCoCo配置如下所示:

jacoco {
    toolVersion = "0.8.0"
    reportsDir = file("$buildDir/reports/jacoco")
}

jacocoTestReport.doFirst{
    classDirectories = files("buildDir/classes")
}

task jacocoReport(type: JacocoReport){
    sourceSets sourceSets.main
    executionData test, integrationTest
}

另外,我有lombok.confi文件,其屬性為lombok.addLombokGeneratedAnnotation = true ,並且生成的內容實際上在build / classes中具有@lombok.Generated注釋。

但是,Sonar的覆蓋率仍然很低。 它報告了大量的條件和需要覆蓋的行。

JaCoCo版本0.8.0的發布公告所述:

請注意

直接讀取exec文件(不是最終報告)並嵌入JaCoCo生成報告的工具只有在更新到此版本的JaCoCo后,才提供過濾功能。

所以,請遵循/等待/等各個廠商如SonarQube - https://jira.sonarsource.com/browse/SONARJAVA-2608

由我們作為JaCoCo項目的一部分開發的集成的對應版本(0.8.0)生成的報告(螞蟻任務,Maven插件和命令行界面)提供了過濾功能。

隨着搖籃JaCoCo插件,您可以使用選擇這兩個運行時間和版本“JaCoCoReport”任務“toolVersion” - https://docs.gradle.org/current/userguide/jacoco_plugin.html

JaCoCo changelog中對此進行了說明:

注意:直接讀取執行文件並嵌入JaCoCo的工具(例如SonarQube或Jenkins)僅在將其更新到此版本的JaCoCo后才提供過濾功能。

截至今天(2018年1月29日), https ://jira.sonarsource.com/browse/SONARJAVA-2608的修復程序應該在尚未發布的SonarJava插件版本5.1中。

從以上所有方面:Gradle生成的報告應該已經被過濾,SonarJava升級后,SonarQube生成的報告將被過濾。

除了配置lombok之外,我還必須告訴聲納掃描儀在哪里可以找到依賴項。 是擺脫SonarQube中“未使用的私有字段應刪除”消息的唯一方法。

我遵循了此網站上的指示: https : //netwolfuk.wordpress.com/2017/10/29/maven-sonarqube-jacoco-lombok-and-teamcity/

歸結為:

  1. 告訴Maven將其依賴項復制到Sonar可以找到它們的地方。 這很簡單,只需添加:

     dependency:copy-dependencies 
  2. 將以下內容添加到聲納構建步驟:

     -Dsonar.java.libraries=target/dependency/*.jar 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM