Class Analyzer

java.lang.Object
org.jacoco.core.analysis.Analyzer

public class Analyzer extends Object
An Analyzer instance processes a set of Java class files and calculates coverage data for them. For each class file the result is reported to a given ICoverageVisitor instance. In addition the Analyzer requires a ExecutionDataStore instance that holds the execution data for the classes to analyze. The Analyzer offers several methods to analyze classes from a variety of sources.
  • Field Details

  • Constructor Details

    • Analyzer

      public Analyzer(ExecutionDataStore executionData, ICoverageVisitor coverageVisitor)
      Creates a new analyzer reporting to the given output.
      Parameters:
      executionData - execution data
      coverageVisitor - the output instance that will coverage data for every analyzed class
  • Method Details

    • createAnalyzingVisitor

      private org.objectweb.asm.ClassVisitor createAnalyzingVisitor(long classid, String className)
      Creates an ASM class visitor for analysis.
      Parameters:
      classid - id of the class calculated with CRC64
      className - VM name of the class
      Returns:
      ASM visitor to write class definition to
    • analyzeClass

      private void analyzeClass(byte[] source)
    • analyzeClass

      public void analyzeClass(byte[] buffer, String location) throws IOException
      Analyzes the class definition from a given in-memory buffer.
      Parameters:
      buffer - class definitions
      location - a location description used for exception messages
      Throws:
      IOException - if the class can't be analyzed
    • analyzeClass

      public void analyzeClass(InputStream input, String location) throws IOException
      Analyzes the class definition from a given input stream. The provided InputStream is not closed by this method.
      Parameters:
      input - stream to read class definition from
      location - a location description used for exception messages
      Throws:
      IOException - if the stream can't be read or the class can't be analyzed
    • analyzerError

      private IOException analyzerError(String location, Exception cause)
    • analyzeAll

      public int analyzeAll(InputStream input, String location) throws IOException
      Analyzes all classes found in the given input stream. The input stream may either represent a single class file, a ZIP archive, a Pack200 archive or a gzip stream that is searched recursively for class files. All other content types are ignored. The provided InputStream is not closed by this method.
      Parameters:
      input - input data
      location - a location description used for exception messages
      Returns:
      number of class files found
      Throws:
      IOException - if the stream can't be read or a class can't be analyzed
    • analyzeAll

      public int analyzeAll(File file) throws IOException
      Analyzes all class files contained in the given file or folder. Class files as well as ZIP files are considered. Folders are searched recursively.
      Parameters:
      file - file or folder to look for class files
      Returns:
      number of class files found
      Throws:
      IOException - if the file can't be read or a class can't be analyzed
    • analyzeAll

      public int analyzeAll(String path, File basedir) throws IOException
      Analyzes all classes from the given class path. Directories containing class files as well as archive files are considered.
      Parameters:
      path - path definition
      basedir - optional base directory, if null the current working directory is used as the base for relative path entries
      Returns:
      number of class files found
      Throws:
      IOException - if a file can't be read or a class can't be analyzed
    • analyzeZip

      private int analyzeZip(InputStream input, String location) throws IOException
      Throws:
      IOException
    • nextEntry

      private ZipEntry nextEntry(ZipInputStream input, String location) throws IOException
      Throws:
      IOException
    • analyzeGzip

      private int analyzeGzip(InputStream input, String location) throws IOException
      Throws:
      IOException
    • analyzePack200

      private int analyzePack200(InputStream input, String location) throws IOException
      Throws:
      IOException