首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自定义JaCoCo Gradle插件-排除报告中的文件

JaCoCo是一个Java代码覆盖率工具,可以帮助开发人员分析代码的测试覆盖率。JaCoCo Gradle插件是一个用于在Gradle项目中集成JaCoCo的插件,可以方便地生成代码覆盖率报告。

在使用JaCoCo Gradle插件时,有时候我们希望在生成代码覆盖率报告时排除一些文件,比如测试文件或者一些第三方库文件。为了实现这个目标,可以自定义JaCoCo Gradle插件来排除报告中的文件。

下面是一个示例的自定义JaCoCo Gradle插件的配置:

  1. 在项目的build.gradle文件中添加以下代码:
代码语言:txt
复制
plugins {
    id 'java'
    id 'jacoco'
}

jacoco {
    toolVersion = '0.8.7'
}

// 自定义JaCoCo Gradle插件
class ExcludeFilesPlugin implements Plugin<Project> {
    void apply(Project project) {
        project.afterEvaluate {
            jacocoTestReport {
                // 排除报告中的文件
                def excludedFiles = ['**/Test*.java', '**/ThirdPartyLibrary.java']
                def fileFilter = { file ->
                    !excludedFiles.any { file.path.matches(it) }
                }
                def sourceFileFilter = { file ->
                    !excludedFiles.any { file.path.endsWith(it) }
                }
                def classFileFilter = { file ->
                    !excludedFiles.any { file.path.endsWith(it.replace('.java', '.class')) }
                }
                fileFilter.includeClasses = classFileFilter
                fileFilter.includeSourceFiles = sourceFileFilter
                fileFilter.includePackages = { packageName ->
                    !excludedFiles.any { packageName.startsWith(it.substring(0, it.lastIndexOf('/'))) }
                }
                report {
                    xml.enabled = true
                    html.enabled = true
                    csv.enabled = false
                    xml.destination = file("$buildDir/jacoco/report.xml")
                    html.destination = file("$buildDir/jacoco/html")
                }
                filter(fileFilter)
            }
        }
    }
}

// 应用自定义插件
apply plugin: ExcludeFilesPlugin
  1. 在项目的settings.gradle文件中添加以下代码:
代码语言:txt
复制
pluginManagement {
    repositories {
        gradlePluginPortal()
    }
    resolutionStrategy {
        eachPlugin {
            if (requested.id.namespace == 'excludefiles') {
                useModule('com.example:exclude-files-plugin:1.0.0')
            }
        }
    }
}
  1. 在项目的根目录下创建一个名为exclude-files-plugin的文件夹,并在该文件夹下创建一个名为build.gradle.kts的文件,添加以下代码:
代码语言:txt
复制
plugins {
    `java-gradle-plugin`
}

java {
    registerPlugin("excludefiles") {
        id = "com.example.exclude-files-plugin"
        implementationClass = "ExcludeFilesPlugin"
    }
}
  1. 在命令行中执行以下命令来生成代码覆盖率报告:
代码语言:txt
复制
./gradlew clean test jacocoTestReport

以上配置中,自定义的JaCoCo Gradle插件会在生成代码覆盖率报告时排除文件名匹配**/Test*.java**/ThirdPartyLibrary.java的文件。你可以根据实际需求修改excludedFiles数组中的文件名匹配规则。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云数据库MySQL版、腾讯云容器服务(TKE)等。你可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android Gradle 插件Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本自定义插件 | 独立文件 )

文章目录 一、在 buildSrc 模块定义 Gradle 插件 二、在 build.gradle 构建脚本自定义 Gradle 插件 三、在其它 gradle 脚本字定义 Gradle 插件 Android...; 该 自定义 Gradle 插件可以在当前工程所有 Module 子模块都可以使用 ; 自定义 Gradle 插件 - GitHub 地址 : https://github.com/han1202012.../Android_UI 二、在 build.gradle 构建脚本自定义 Gradle 插件 ---- 在 build.gradle 构建脚本 , 也可以创建自定义 Gradle 插件 , 并调用该插件方法...apply(Project project) { println 'MyPlugin2' } } // 引入在本文件定义 Gradle 插件 apply plugin:...定义 MyPlugin3 插件 apply plugin: MyPlugin3 在 build.gradle 构建脚本 , 引入 plugin.gradle 文件 , 该操作相当于将 plugin.gradle

1.2K10

【Android Gradle 插件Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件获定义方法 | 在插件创建 Gradle 任务 | 代码示例 )

文章目录 一、自定义插件定义普通方法 二、自定义插件定义 Gradle 任务 Task 三、代码示例 代码结构 自定义插件 自定义扩展 自定义扩展扩展 自定义 Gradle 任务 build.gradle...一、自定义插件定义普通方法 ---- 在 自定义 Gradle 插件 Extension 扩展 , 可以定义方法 , 定义方法可以带参数 , 也可以不带参数 ; 代码示例如下 : class...// 类似于 Android Gradle 插件 android // 引入了 MyPlugin 插件后 // 就可以使用 myplugin 配置块...def myplugin = project.extensions.create("myplugin", MyPluginExtensions) 在 build.gradle 引入插件 , 并调用该扩展方法...Gradle 任务 Task ---- 在 Android Studio Gradle 面板 Task 任务 , 都是在 Android Gradle 插件定义 , 在自定义插件 , 也可以自定义

1.6K20

【Android Gradle 插件Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件扩展配置扩展 | 在自定义插件获取扩展属性 )

文章目录 一、Android Gradle 插件扩展扩展 二、为自定义 Gradle 插件扩展配置扩展 并 获取扩展属性 Android Plugin DSL Reference 参考文档 : Android...一、Android Gradle 插件扩展扩展 ---- 在上一篇博客 【Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android...Gradle 插件扩展 | 自定义 Extension 扩展 ) , 实现了 自定义插件 扩展 Extension , 在 Module 模块下 build.gradle 构建脚本 ,...Plugin 插件 Extension 扩展 , 再 定义一层 Extension 扩展 ; 二、为自定义 Gradle 插件扩展配置扩展 并 获取扩展属性 ---- 定义扩展类 : class...插件 android // 引入了 MyPlugin 插件后 // 就可以使用 myplugin 配置块 def myplugin = project.extensions.create

2K10

【Android Gradle 插件自定义 Gradle 插件模块 ④ ( META-INF 声明自定义插件核心类 | 在应用依赖本地 Maven 仓库自定义 Gradle 插件 )

文章目录 一、META-INF 声明自定义插件核心类 二、在应用依赖本地 Maven 仓库自定义 Gradle 插件 Android Plugin DSL Reference 参考文档 :...自定义 Gradle 插件 - GitHub 地址 : https://github.com/han1202012/Android_UI 一、META-INF 声明自定义插件核心类 --...插件 , 需要在 META-INF/gradle-plugins/插件组名.插件名.properties 文件 , 声明该 自定义插件 implementation-class=org.gradle.api.plugins.antlr.AntlrPlugin...在自己自定义插件 , 也需要进行上述配置 ; 在 " src/main " 目录下 , 创建 " resources\META-INF\gradle-plugins " 目录 , 在该目录下创建...publishPluginPublicationToMavenLocal 任务 ; 二、在应用依赖本地 Maven 仓库自定义 Gradle 插件 ---- 依赖本地 Maven 仓库 , 并导入

1.4K10

【Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件扩展 | 自定义 Extension 扩展 )

文章目录 一、自定义插件作用 二、Android Gradle 插件 AppExtension 扩展 三、自定义 Extension 扩展 Android Plugin DSL Reference 参考文档...一、自定义插件作用 ---- 在 Gradle 自定义插件 Plugin , 如果要执行复杂工作 , 可以在 实现 Plugin 接口 apply 函数执行 ; package org.gradle.api...Android Gradle 插件 AppExtension 扩展 ---- Android Gradle 插件 也是一个 自定义插件 , 这个插件功能复杂 , 代码量较大 , 如 定义了 AppExtension...Extension 扩展 ---- 在 Android Gradle 插件 , 定义了 AppExtension 扩展 , 对应就是 build.gradle 构建脚本 android 脚本块...; 自定义 Gradle 插件 , 可以定义自己扩展 ; 首先 , 调用 project.extensions.create 方法 , 创建扩展 , 类似于 Android Gradle 插件

86920

【Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )

org.gradle.api.DefaultTask 配置 ( Gradle 自定义任务类父类 ) 文档 : https://docs.gradle.org/current/javadoc/org...一、实现 Gradle 插件代码 ---- 在 buildSrc 模块 src/main/groovy 目录 下 , 创建 MyPlugin.groovy 代码文件 作为插件主要代码 ,..., 会自动执行 apply 方法 代码 ; Gradle 插件类需要实现 org.gradle.api.Plugin 接口 , 接口泛型设置为 org.gradle.api.Project 类型...(T var1); } 二、模块引入插件并编译 ---- 在 app 模块 build.gradle 构建脚本 , 使用 apply plugin 引入自定义插件 , apply plugin:...MyPlugin 那么在执行时 会先执行 MyPlugin 插件 apply 函数 , 也就是 打印 MyPlugin 字符串 ;

48710

【Android Gradle 插件自定义 Gradle 插件模块 ② ( 在模块定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )

文章目录 一、在 Java or Kotlin Library 模块定义插件 二、引入自定义 Gradle 插件模块 三、配置自定义 Gradle 插件上传选项 四、配置 Group 分组、插件名称、...自定义 Gradle 插件是无法在其它 Module 引入 ; 二、引入自定义 Gradle 插件模块 ---- 如果想要引入该插件 , 需要将该插件上传到 远程仓库 或者 本地仓库 , 才能通过...// 指定自定义 Gradle 插件版本号 version '0.1' 自定义 Gradle 插件名称 , 默认为工程名 , 也可以在 publishing / publications / xxx...group 'kim.hsl.plugin' // 指定自定义 Gradle 插件版本号 version '0.1' // 自定义 Gradle 插件名称 , 默认为工程名 // 也可以在 publishing...Gradle 插件分组 group 'kim.hsl.plugin' // 指定自定义 Gradle 插件版本号 version '0.1' // 自定义 Gradle 插件名称 , 默认为工程名

1.5K20

【Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块依赖 Android Gradle 插件 | 完整代码示例 )

自定义 Gradle 插件 - GitHub 地址 : https://github.com/han1202012/Android_UI 一、在 buildSrc 模块依赖 Android...插件相关 API ; 如果我们想要依赖其它 函数库 , 可以在 buildSrc 模块下 , 自己创建 build.gradle 构建脚本 ; 如果想要在 buildSrc 模块代码 , 使用...之后 , 可以在 buildSrc 模块调用 Android Gradle 模块 API ; // 获取 自定义 Gradle 插件扩展属性 , 必须在 Gradle 分析完成之后才能进行...插件Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件获定义方法 | 在插件创建 Gradle 任务 | 代码示例 ) 博客 ; GitHub 地址 : https://github.com...(Project project) { println 'MyPlugin' // 创建一个扩展 // 类似于 Android Gradle 插件

89330

【Android Gradle 插件自定义 Gradle 插件模块 ① ( 在 Module 模块自定义 Gradle 插件 | 创建自定义插件类型模块 | 手动导入相关依赖 )

文章目录 一、将自定义 Gradle 插件上传到远程仓库 二、创建自定义插件类型模块 ( Java or Kotlin Library ) 三、手动导入相关依赖 ( Java | Groovy | Gradle...--- 在上一篇博客 【Android Gradle 插件Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本自定义插件...| 独立文件 ) , 总结了在 Android Studio 工程 自定义 Gradle 插件 , 并在 build.gradle 构建脚本 中导入插件代码 ; Android Gradle...插件 也是一种 自定义 Gradle 插件 , 该插件被上传到 jcenter / google / mavenCentral 远程仓库 中进行存储 , 在 Android Studio 工程根目录...' } 方式 , 在 Module 模块 , 导入并使用 Android Gradle 插件 ; 这种方式是将 自定义 Gradle 插件 jar 包 上传到了 jcenter / google

2.1K30

【Android Gradle 插件Gradle 自定义 Plugin 插件 ① ( buildSrc 目录实现 Gradle 插件 | 创建 srcmaingroovy 源码目录并编译 )

文章目录 一、buildSrc 目录实现 Gradle 插件 二、创建 buildSrc 目录 三、创建 src/main/groovy 源码目录 四、演示 buildSrc 模块作用 ( 在 Gradle...一、buildSrc 目录实现 Gradle 插件 ---- 创建 Gradle 插件 , 一般是在 Android Studio 或者 IntelliJ IDEA , 创建一个插件模块 ,...这里以 AS 为例 ; 先介绍实现 Gradle 插件一种方式 , 在 Android Studio 工程根目录 buildSrc 目录 , 实现 Gradle 插件 ; 二、创建 buildSrc...目录 ---- 在 Android Studio 工程根目录 , 创建 buildSrc 目录 , 该目录是特殊目录 , AS 自动为该目录引入了 Groovy / Java / Gradle ...工程其它编译脚本 ; 编译后 , 在 buildSrc 目录下会生成 .gradle 目录 和 build 目录 ;

1.3K20

【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ④ ( 默认生成 pom 文件 | Maven pom 配置 | 自定义 pom 文件节点 )

文章目录 一、默认生成 pom 文件 二、Maven pom 配置 三、自定义 pom 文件节点 Android Plugin DSL Reference 参考文档 : Android Studio.../han1202012/Android_UI 一、默认生成 pom 文件 ---- 在 自定义 Gradle 插件 编译后生成 pom 文件 , 存放在 " build/publications...pom 配置 ---- pom 文件 , 除了默认生成配置外 , 还可以添加自定义 pom 节点属性 ; pom 配置文件也会随着 源码 , jar 包 , 文档 一同上传到 Maven 仓库...Gradle 插件分组 group 'kim.hsl.plugin' // 指定自定义 Gradle 插件版本号 version '0.1' // 自定义 Gradle 插件名称 , 默认为工程名...面板 publishingPluginPublicationToMavenLocal 任务 , 查看本地 Maven 仓库 , 生成 pom 配置如下 : 自定义 Gradle 插件 -

1.4K10

SonarQube测试覆盖率--Java

它还支持导入通用格式,该格式可用作从不直接支持工具自定义转换报表目标。 Java 测试覆盖率 SonarQube支持将测试覆盖率报告作为Java项目分析一部分。...调整您设置 要启用覆盖范围,您需要: 调整构建过程,以便 JaCoCo 报告生成步骤在 SonarScanner 步骤之前运行。 确保 JacCoCo 将其报告文件写入生成环境定义路径。...jacoco-maven-plugin 如果要将所有特定于模块报告聚合到一个项目级报告,最简单解决方案是创建一个特殊Maven模块(以及您已有的模块),该模块除了使用该目标的模块外,什么都不包含...在 Gradle 项目中添加覆盖范围 要为您 Gradle 文件设置代码覆盖率,您只需将 JaCoCo 插件和 SonarScanner for Gradle 一起应用于您项目文件,因为 JaCoCo...已经集成到默认 gradle 发行版:build.gradle plugins { id "jacoco" id "org.sonarqube" version "3.3" } jacocoTestReport

2.2K30

【Android Gradle 插件自定义 Gradle 任务 ⑯ ( 从任务容器 TaskContainer 搜索 Gradle 任务 | 压缩 packageDebug 任务输出文件 )

文章目录 一、从任务容器 TaskContainer 搜索 Gradle 任务 二、压缩 packageDebug 任务输出文件 Android Plugin DSL Reference 参考文档 :...插件配置与 Gradle 配置关联 : 【Android Gradle 插件Gradle 依赖管理 ① ( org.gradle.api.Project 配置 | Android Gradle 插件配置与...; 查找 Gradle 任务操作 , 必须在 Project#afterEvaluate 函数闭包参数执行 , 否则静态查找时查找不到 , 同时结合 【Android Gradle 插件自定义...Gradle 任务 ⑮ ( Gradle 自带 Zip 任务使用 | Zip 任务简介 | 代码示例 ) 博客压缩文件代码 ; 将 packageDebug 任务输出文件进行 zip 压缩 ,...packageDebug 任务输出文件 ; 查看该压缩包内容如下 :

68710

Android增量代码测试覆盖率工具

在push之前生成覆盖率报告,同时对于覆盖率小于一定值(默认95%,可自定义提交提示并报警: 整体流程图 整个工具通过Gradle插件形式部署到项目中,在项目编译阶段完成新增代码查找和注入,...收到特定广播(一个自定义广播,在执行生成覆盖率报告task前发送)时。 并在生成覆盖率报告之前把设备运行时数据同步到本地开发环境。...在push之前生成覆盖率报告,同时对于覆盖率小于一定值(默认95%,可自定义提交提示并报警: 整体流程图 整个工具通过Gradle插件形式部署到项目中,在项目编译阶段完成新增代码查找和注入,在最终...收到特定广播(一个自定义广播,在执行生成覆盖率报告task前发送)时。 并在生成覆盖率报告之前把设备运行时数据同步到本地开发环境。...在push之前生成覆盖率报告,同时对于覆盖率小于一定值(默认95%,可自定义提交提示并报警: 整体流程图 整个工具通过Gradle插件形式部署到项目中,在项目编译阶段完成新增代码查找和注入,在最终

2.1K10

教你使用 Jacoco 统计服务端代码覆盖率

前言 前面有一篇 文章 使用 Python + Coverage 来统计测试用例代码覆盖率 Jacoco 针对 Java 语言一款开源覆盖率工具,可以嵌入到 Maven、Gradle ,提供多种尺度覆盖率计数器...然后,配置 pom.xml 文件,为当前项目新增 jacoco 依赖 JAR 包 <!...接着,配置 Jacoco 插件及相关 goal,使用 includes 和 excludes 两个关键字设定包含或排除类路径 比如:这里只统计 com.xingag.api.service 下面的类...--配置Jacoco插件信息--> org.jacoco jacoco-maven-plugin</artifactId.../target/site/jacoco ? 用浏览器打开统计报告文件 index.html 文件,可以很直观查看单元测试覆盖率及对应测试类具体覆盖范围 ? 4.

3.1K10

简单两步实现 Jacoco+Android 代码覆盖率接入!(最新最全版)

; 实战 其实基于jacoco来做Android端代码覆盖率难点主要是各个项目的gradle插件依赖跟jacoco版本直接兼容性问题,特别是在以及开发很多年多模块项目下,这个问题尤为明显,另外网上虽然有很多相关文章资料...,但是要么是gradle插件依赖版本太低,要么就是jacoco版本、配置文件以及项目的开发环境没有说清楚或者写有问题,导致最终很难按照说明完成接入。...,单模块项目修改jacoco.gradle配置文件源码路径和class文件路径即可。...,如下图: 然后在你app模块下build.gradle文件依赖这个jacoco.gradle,如下所示: apply from: 'jacoco.gradle' ...do something...,那么需要在子modulebuild.gradle文件添加如下依赖: apply from: rootProject.file('jacoco.gradle') 第二步 定义一个JacocoHelper

5.1K20

软件测试|SonarQube 安装、配置及 JaCoCo、Maven 集成

此外, SonarQube 插件还可以对 Java 以外其他编程语言提供支持,对国际化以及报告文档化也有良好支持。...SonarQube 支持多种客户端集成方式,包括但不限于 Scanner 客户端、Ant、Gradle、Maven、Jenkins、IDEA 插件等。比较常用Gradle 和 Maven。...Sonar 实际上是一个 Web 系统,展现了静态代码扫描结果,结果是可以自定义,而真正实现代码扫描是 Sonar Scanner 这个工具,另外同时支持多种语言原理是它扩展性,通过插件实现...到你想检测工程根目录下新建文件sonar-project.properties,文件内容如下?,文件参数配置,参考Sonar Analysis Parameters这篇文章。...1.在项目根目录 sonar-project.properties 文件,增添以下配置内容:2.在 SoarQube 登录 admin,并通过在【配置-应用市场】下找到Jacoco插件并安装和重启。

1.1K20
领券