jacoco core.runtime包源码分析

简介: jacoco core.runtime包源码分析

1 IExecutionDataAccessorGenerator

image.png

被 instrument 的类需要一段代码,该代码从运行时获取 boolean[]实例。

该机制是针对于运行时的,因此由该接口抽象。 实现由 IRuntime 实现提供,并由 instrumentation process过程使用。

唯一方法

  /**
   * 此方法生成获得具有给定id的类的coverage数据结构所需的字节码。 通常,instrumentation 过程会将此代码嵌入到在类初始化时调用的方法中。甚至可以在目标VM外部随时调用此方法。
   *
   * 生成的代码必须将 boolean[] 实例推入操作数栈。 除此结果对象外,生成的代码不得对嵌入方法或类的结构进行任何假设。 生成的代码不得使用或分配局部变量。
   *
   * @param classid
   * @param classname
   *            VM class name
   * @param probecount
   *            probe count for this class
   * @param mv
   *            code output
   * @return additional stack size required by the implementation, including
   *         the instance pushed to the stack
   */
  int generateDataAccessor(long classid, String classname, int probecount,
      MethodVisitor mv);

IRuntime 实现类

package org.jacoco.core.runtime;
/**
 * 此接口表示一种特定的机制,用于在运行时收集目标VM中的执行信息。
 */
public interface IRuntime extends IExecutionDataAccessorGenerator {
  /**
   * start coverage runtime. 
   * This method MUST be called before any class instrumented for this runtime is loaded.
   * 必须在加载为此运行时检测到的任何类之前调用此方法。
   *
   * @param data
   *            the execution data for this runtime
   * @throws Exception
   *             any internal problem during startup
   */
  void startup(RuntimeData data) throws Exception;
  /**
   * Allows the coverage runtime to cleanup internals. This class should be
   * called when classes instrumented for this runtime are not used any more.
   * 允许coverage运行时清理内部。 当不再使用为此运行时检测的类时,应调用该类。
   */
  void shutdown();
}
目录
相关文章
|
人工智能
AI背景颜色变成白色了怎么恢复灰色?
一些刚开始使用AI来做平面设计的朋友,有时候会突然工作界面变成白色,而设置里看了是灰色,然后怎样都调不回来了。贴吧里一篇文章介绍用CTRL+SHIFT+H,实际上这是隐藏画板的快捷键并没有解决问题。
AI背景颜色变成白色了怎么恢复灰色?
|
XML 监控 负载均衡
Jacoco的覆盖率原理
JaCoCo(Java Code Coverage)是一种广泛使用的代码覆盖率工具,通过在字节码中插入探针(Probe)来收集覆盖率信息。
947 6
Jacoco的覆盖率原理
|
数据采集 Web App开发 JavaScript
python-selenium模块详解!!!
Selenium 是一个强大的自动化测试工具,支持 Python 调用浏览器进行网页抓取。本文介绍了 Selenium 的安装、基本使用、元素定位、高级操作等内容。主要内容包括:发送请求、加载网页、元素定位、处理 Cookie、无头浏览器设置、页面等待、窗口和 iframe 切换等。通过示例代码帮助读者快速掌握 Selenium 的核心功能。
1208 5
|
算法 数据库
MYSQL-mybatisplus的主键自增问题与@Tableld@TableField@TableLogic的学习
关于org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.laoyang.Mapper.BookMapper.deleteById问题
771 103
The authenticity of host ‘gitee.com (180.76.198.77)‘ can‘t be established.ED25519 key fingerprint i
The authenticity of host ‘gitee.com (180.76.198.77)‘ can‘t be established.ED25519 key fingerprint i
|
测试技术 Shell Android开发
随机测试 Monkey Test
随机测试 Monkey Test
515 0
|
XML 网络协议 数据可视化
java插桩-Jacoco java代码覆盖率可视化
java插桩-Jacoco java代码覆盖率可视化
1034 0
java插桩-Jacoco java代码覆盖率可视化
|
Java 关系型数据库 MySQL
【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + Navicat + 数据库本地化 + 启动java项目
【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + Navicat + 数据库本地化 + 启动java项目
700 0
|
分布式计算 Hadoop 数据库
docker下安装与配置streampark
docker下安装与配置streampark
543 0
|
SQL 网络协议 Cloud Native
一文了解一线互联网大厂的 Golang 单测最佳实战经验
一文了解一线互联网大厂的 Golang 单测最佳实战经验