使用Sonarrunner和Gradle从Jacoco报告中排除包
有没有一种方法可以将包从SonarQube(由gradle+sonar runner检测)覆盖报告(由jacoco生成)中排除,而不将其完全排除在项目之外 以下是我迄今为止所做的尝试: 版本信息使用Sonarrunner和Gradle从Jacoco报告中排除包,gradle,jacoco,sonar-runner,Gradle,Jacoco,Sonar Runner,有没有一种方法可以将包从SonarQube(由gradle+sonar runner检测)覆盖报告(由jacoco生成)中排除,而不将其完全排除在项目之外 以下是我迄今为止所做的尝试: 版本信息 SonarQube 4.5.1 格拉德尔2.2 Jacoco配置 声纳转轮配置 属性设置以从Sonar分析中排除包。将此添加到我的配置中会导致软件包根本不显示在Sonar中的情况 property 'sonar.exclusions', excludedClasses().join(',') 属
- SonarQube 4.5.1
- 格拉德尔2.2
property 'sonar.exclusions', excludedClasses().join(',')
属性设置以从jacoco中排除包。设置此选项会导致包被排除在覆盖率分析之外,但显示为0%,这将累积为糟糕的总分
property 'sonar.jacoco.exclusions', excludedClasses().join(',')
我已通过使用sonar-project.properties中的sonar.coverage.Exclutions属性,成功地从覆盖率报告中排除了特定的包。官方中描述了该属性,将@Mikalai的答案和@pavel的评论组合成更易于复制和粘贴的内容: 要从所有声纳检查(覆盖范围、代码气味、bug等)中排除包或类,请将以下内容添加到
build.gradle
:
sonarqube {
properties {
property 'sonar.exclusions', "**/com/some/package/**"
}
}
sonarqube {
properties {
property 'sonar.coverage.exclusions', "**/com/some/package/**"
}
}
要仅从Sonar代码覆盖率检查中排除软件包或类,请将以下内容添加到build.gradle
:
sonarqube {
properties {
property 'sonar.exclusions', "**/com/some/package/**"
}
}
sonarqube {
properties {
property 'sonar.coverage.exclusions', "**/com/some/package/**"
}
}
将资源、资产、自定义包和自动生成的类从sonar android项目代码覆盖范围中排除 创建排除列表,如下所示
exclusionList = [
//Res and Assets
"src/main/res/**/*.*",
"src/main/assets/**/*.*",
//Auto-Generated
'**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/*Manifest.*',
'android/**/*.*',
'androidx/**/*.*',
// excluded packages
**/com/<your-package-path>/**/*]
注:
- 保留完整路径以排除完整目录
- **/*包括父目录下的所有文件和子目录
- *Bean包括所有包含“Bean”的类名
- **/首先,它涵盖了特定包的父目录
执行上述更改后,运行Jacoco命令并检查sonar portal的覆盖范围部分。如果您将Gradle 5+与Kotlin DSL一起使用,则可以如下方式将文件排除在覆盖范围之外:
// configure the SonarQube plugin
sonarqube {
val exclusions = listOf(
"**/com/some/package/**",
"**/all/files/under/package/*",
"**/com/some/package/OneClass.kt"
)
// exclude the directories only from coverage (but not from other analysis)
// https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-gradle/
properties {
property("sonar.coverage.exclusions", exclusions)
}
}
从Sonarqube中排除多个模块或类。将下面的代码添加到
build.gradle:
示例:
包名称=com.student.result.detail,com.customer.order,com.student
sonarqube {
properties {
property 'sonar.exclusions', "**/com/student/result/details/**",
"**/com/customer/order/**",
"**/com/student/**";
}
}
这在gradle 6和sonarqube插件2.8中对我起了作用
属性“sonar.coverage.excludes”、“***/com/some/package/entity/***、”+“***/com/some/package/config/***、***/com/some/package/dto/***、***/com/some/package/dao/***”
注意:包是逗号分隔的,但在单个字符串中Gradle配置:
sonarqube{properties{property'sonar.coverage.exclusions',“***/com/some/package/*,***/com/other/package/Class*”}
正确的工作模式是:sonarqube{properties{property'sonar.coverage.exclusions'、'*/model/、*/commons/、*/exception/、*/controller/、*/utils/、***/Test.java'}}我正在运行sonar v7.9,并在build.gradle中进行了相同的配置。sonar仪表板仍将这些类显示为0%覆盖率。是否需要其他配置/设置?