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();
}
目录
相关文章
|
6月前
|
Java 开发工具 流计算
flink最新master代码编译出现Java Runtime Environment 问题
在尝试编译Flink源码时遇到Java运行时环境致命错误:EXCEPTION_ACCESS_VIOLATION。问题出现在JVM.dll+0x88212。使用的是Java 11.0.28和Java HotSpot(TM) 64-Bit Server VM。系统为Windows客户端,没有生成核心dump文件。错误日志保存在hs_err_pid39364.log和replay_pid39364.log。要解决这个问题,建议检查JDK版本兼容性,更新JDK或参照错误报告文件提交Bug至http://bugreport.java.com/bugreport/crash.jsp。
|
3月前
|
Java Maven Windows
java -jar 启动 boot 程序 no main manifest attribute, in .\vipsoft-model-web-0.0.1-SNAPSHOT.jar
java -jar 启动 boot 程序 no main manifest attribute, in .\vipsoft-model-web-0.0.1-SNAPSHOT.jar
59 0
|
IDE Java 开发工具
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8的解决方案
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8的解决方案
|
6月前
|
Java Maven
idea执行maven打包失败:java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo
idea执行maven打包失败:java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo
281 0
Java:Springboot的service循环依赖问题
Java:Springboot的service循环依赖问题
166 0
|
Java Maven
Java-SpringBoot-09-JDK编译版本配置
在SpringBoot中,根据“约定优于配置”的特性,JDK也是有默认配置的,我们创建了一个SpringBoot版本2.4.5的项目的时候,可以看到默认版本是JDK8。
417 0
Java-SpringBoot-09-JDK编译版本配置
|
存储 Java API
JaCoCo core.internal.flow包源码(下)
JaCoCo core.internal.flow包源码(下)
156 0
JaCoCo core.internal.flow包源码(下)
|
存储 Java
Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(下)
Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(下)
609 0
Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(下)
|
Java API
Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(上)
Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(上)
289 0
Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(上)
|
JavaScript Java Maven
Spring IO Platform:解决依赖版本冲突
Spring IO Platform:解决依赖版本冲突
472 0