Package org.jacoco.core.instr

## Class Instrumenter

- java.lang.Object
- - org.jacoco.core.instr.Instrumenter

    public class Instrumenter
    extends java.lang.Object

Several APIs to instrument Java class definitions for coverage tracing.

### Constructor Summary

Constructors
`Instrumenter​(IExecutionDataAccessorGenerator runtime)` Creates a new instance based on the given runtime.

### Method Summary

All Methods Instance Methods Concrete Methods
`byte[]` `instrument​(byte[] buffer, java.lang.String name)` Creates a instrumented version of the given class if possible.
`void` `instrument​(java.io.InputStream input, java.io.OutputStream output, java.lang.String name)` Creates a instrumented version of the given class file.
`byte[]` `instrument​(java.io.InputStream input, java.lang.String name)` Creates a instrumented version of the given class if possible.
`byte[]` `instrument​(org.objectweb.asm.ClassReader reader)` Creates a instrumented version of the given class if possible.
`int` `instrumentAll​(java.io.InputStream input, java.io.OutputStream output, java.lang.String name)` Creates a instrumented version of the given resource depending on its type.
`void` `setRemoveSignatures​(boolean flag)` Determines whether signatures should be removed from JAR files.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Instrumenter

    public Instrumenter​(IExecutionDataAccessorGenerator runtime)

Creates a new instance based on the given runtime.

Parameters:
  `runtime` - runtime used by the instrumented classes

### Method Detail

#### setRemoveSignatures

    public void setRemoveSignatures​(boolean flag)

Determines whether signatures should be removed from JAR files. This is typically necessary as instrumentation modifies the class files and therefore invalidates existing JAR signatures. Default is `true`.

Parameters:
  `flag` - `true` if signatures should be removed

#### instrument

    public byte[] instrument​(org.objectweb.asm.ClassReader reader)

Creates a instrumented version of the given class if possible.

Parameters:
  `reader` - definition of the class as ASM reader
Returns:
  instrumented definition

#### instrument

    public byte[] instrument​(byte[] buffer,
                             java.lang.String name)
                      throws java.io.IOException

Creates a instrumented version of the given class if possible.

Parameters:
  `buffer` - definition of the class
  `name` - a name used for exception messages
Returns:
  instrumented definition
Throws:
  `java.io.IOException` - if the class can't be instrumented

#### instrument

    public byte[] instrument​(java.io.InputStream input,
                             java.lang.String name)
                      throws java.io.IOException

Creates a instrumented version of the given class if possible. The provided `InputStream` is not closed by this method.

Parameters:
  `input` - stream to read class definition from
  `name` - a name used for exception messages
Returns:
  instrumented definition
Throws:
  `java.io.IOException` - if reading data from the stream fails or the class can't be instrumented

#### instrument

    public void instrument​(java.io.InputStream input,
                           java.io.OutputStream output,
                           java.lang.String name)
                    throws java.io.IOException

Creates a instrumented version of the given class file. The provided `InputStream` and `OutputStream` instances are not closed by this method.

Parameters:
  `input` - stream to read class definition from
  `output` - stream to write the instrumented version of the class to
  `name` - a name used for exception messages
Throws:
  `java.io.IOException` - if reading data from the stream fails or the class can't be instrumented

#### instrumentAll

    public int instrumentAll​(java.io.InputStream input,
                             java.io.OutputStream output,
                             java.lang.String name)
                      throws java.io.IOException

Creates a instrumented version of the given resource depending on its type. Class files and the content of archive files are instrumented. All other files are copied without modification. The provided `InputStream` and `OutputStream` instances are not closed by this method.

Parameters:
  `input` - stream to contents from
  `output` - stream to write the instrumented version of the contents
  `name` - a name used for exception messages
Returns:
  number of instrumented classes
Throws:
  `java.io.IOException` - if reading data from the stream fails or a class can't be instrumented