从插件中的 SonarQube 覆盖率分析中排除文件

问题描述 投票:0回答:1

我有一些文件,如导航、意图和自动生成的文件,我想从 SonarQube 的覆盖率分析中排除它们。我想将其放入 gradle 插件中,这样我就可以将其应用于多个模块。有办法做到这一点吗?

我有 5.0.0.4638 版本的 SonarQube。

文件示例:“/Navigation.”、“/NavGraph.”。

我想我需要一个实现Plugin接口的类。

class SonarQubeExclusionPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        // TODO
    }
}

我在某个地方看到了这样的方法,但即使我将 SonarQube 添加到模块中,我也无法访问 SonarQubeExtension 类。

class SonarQubeExclusionPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        project.afterEvaluate {
            configureSonarQubeExtension(project)
        }
    }

    private fun configureSonarQubeExtension(project: Project) {
        val intentFilesToExclude = listOf(
            "**/*Activity.*",
            "**/*Fragment.*"
            // Add more intent-related file patterns here if needed
        )

        project.extensions.configure(SonarQubeExtension::class.java) { extension ->
            extension.properties {
                it["sonar.coverage.exclusions"] = intentFilesToExclude.joinToString(",")
            }
        }
    }
}
android kotlin android-gradle-plugin sonarqube jacoco
1个回答
0
投票

使用这种方法,您不需要为其实现插件

android {
  // ... other configurations

  sonarqube {
    properties {
      property "sonar.coverage.exclusions", "**/your/activity/package/*.java, **/your/fragment/package/*.java"
    }
  }

您还可以获得所有排除的列表,如下所示:

创建如下所示的排除列表

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>/**/*]
Provide the exclusion list to sonar coverage property

property 'sonar.coverage.exclusions', exclusionList
© www.soinside.com 2019 - 2024. All rights reserved.