[英]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的覆蓋率仍然很低。 它報告了大量的條件和需要覆蓋的行。
請注意
直接讀取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的工具(例如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/
歸結為:
告訴Maven將其依賴項復制到Sonar可以找到它們的地方。 這很簡單,只需添加:
dependency:copy-dependencies
將以下內容添加到聲納構建步驟:
-Dsonar.java.libraries=target/dependency/*.jar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.