专栏首页JavaEdgejacoco core.runtime包源码分析

jacoco core.runtime包源码分析

1 IExecutionDataAccessorGenerator

被 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();

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java编程思想第五版(On Java8)(十一)-内部类

    内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可见性。然而必须要了解,内部类与组合是完全不同的概念,这一点很重要。在...

    JavaEdge
  • 高可用服务架构设计(12) - 基于request cache请求缓存技术优化批量商品数据查询接口

    3、查找是否开启了request cache,是否有请求缓存,如果有缓存,直接取用缓存,返回结果

    JavaEdge
  • SpringCloud微服务实战(六)-统一配置中心1 统一配置中心概述2 Config Server

    JavaEdge
  • ​今天 1024,为了不 996,Lombok 用起来以及避坑指南

    Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注解,用来消除 Java 类中的大量样板代码。

    双鬼带单
  • 今天 1024,为了不 996,Lombok 用起来以及避坑指南

    Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注解,用来消除 Java 类中的大量样板代码。

    双鬼带单
  • asp.net core web的导入导出excel功能

    这里主要记录下asp.net core web页面上进行导入导出excel的操作。

    Vincent-yuan
  • Java编程思想第五版(On Java8)(十一)-内部类

    内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可见性。然而必须要了解,内部类与组合是完全不同的概念,这一点很重要。在...

    JavaEdge
  • FeignClient注解及参数

    FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上

    hbbliyong
  • Spring常用配置

    上篇文章我们简单介绍了Spring的基本配置,算是一个简单的入门,这篇文章我们再一起来看看Spring在使用的过程中一些其他的常见配置。 Bean的Scope ...

    江南一点雨
  • 解决iOS 10 Info.plist文件缺少key崩溃的正确姿势

    Raindew

扫码关注云+社区

领取腾讯云代金券