org.jacoco.core.instr

## Class Instrumenter

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

    public class Instrumenter
    extends Object

Several APIs to instrument Java class definitions for coverage tracing.

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods
`byte[]` `instrument(byte[] buffer, 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.
`void` `instrument(InputStream input, OutputStream output, String name)` Creates a instrumented version of the given class file.
`byte[]` `instrument(InputStream input, String name)` Creates a instrumented version of the given class if possible.
`int` `instrumentAll(InputStream input, OutputStream output, 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,
                             String name)
                      throws 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:
  `IOException` - if the class can't be analyzed

#### instrument

    public byte[] instrument(InputStream input,
                             String name)
                      throws IOException

Creates a instrumented version of the given class if possible.

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

#### instrument

    public void instrument(InputStream input,
                           OutputStream output,
                           String name)
                    throws IOException

Creates a instrumented version of the given class file.

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:
  `IOException` - if reading data from the stream fails or the class can't be instrumented

#### instrumentAll

    public int instrumentAll(InputStream input,
                             OutputStream output,
                             String name)
                      throws 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.

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:
  `IOException` - if reading data from the stream fails or a class can't be instrumented