awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
jacoco avatar

jacoco/jacoco

0
View on GitHub↗
4,580 stars·1,200 forks·Java·18 viewswww.jacoco.org/jacoco↗

Jacoco

JaCoCo is a Java code coverage tool and bytecode instrumenter that measures which parts of source code are executed during tests. It functions as a runtime agent to monitor application execution on the fly or as a library for offline bytecode instrumentation, allowing it to capture execution data in environments where runtime agents are restricted.

The project distinguishes itself by providing both dynamic and static instrumentation paths to track execution. It includes a runtime agent for on-the-fly monitoring and the ability to modify compiled class files before execution. It further enables the retrieval of execution metrics from running processes via remote network connections without interrupting the active application.

The system calculates quantitative coverage metrics across instructions, branches, lines, methods, and classes, alongside cyclomatic complexity measurements. It provides capabilities for merging data from multiple test runs, enforcing coverage thresholds within CI/CD quality gates, and generating reports that map executed bytecode back to source code. Visual integration is available for displaying these results directly within code editors.

The tool integrates with build automation systems and command line interfaces to automate data collection and report generation.

Features

  • Code Coverage Analysis - Measures the extent to which Java source code is executed by a test suite to identify untested logic.
  • Java Agents - Functions as a Java agent that monitors application execution on the fly to record coverage data.
  • Code Quality Analysis Tools - Calculates cyclomatic complexity and enforces coverage thresholds to maintain software quality standards.
  • Execution Tracking - Records which specific bytecode instructions and branches are executed during a test run using boolean markers.
  • Bytecode-to-Source Mapping - Links executed bytecode instructions back to original source code lines and methods for report generation.
  • Bytecode Instrumentation Agents - Implements bytecode instrumentation agents to inject tracking probes into compiled Java classes at runtime.
  • Class Definition Hashing - Assigns a unique hash to raw class definitions to distinguish between different versions of the same class.
  • Offline Bytecode Instrumentation - Modifies compiled class files before execution to enable coverage tracking in environments that prohibit runtime agents.
  • Runtime Bytecode Instrumentation - Injects tracking logic into class files during execution via a Java agent to monitor runtime behavior.
  • Branch Coverage Tracking - Analyzes decision statements to determine the number of executed or missed paths in the code.
  • Java Instrumentation Frameworks - Provides a framework for injecting tracking probes into Java class files via runtime or offline instrumentation.
  • Runtime Bytecode Instrumentation - Injects tracking probes into class files at runtime using a Java agent to monitor execution paths.
  • Execution Coverage Metrics - Tracks whether at least one instruction in a method or one method in a class has been executed.
  • Class Version Hashes - Assigns unique identifiers to class definitions to ensure execution data matches the correct version of the source code.
  • Code Coverage Tools - Instruments bytecode to measure the percentage of Java source code executed during automated tests.
  • Threshold Enforcements - Implements validation mechanisms that fail the build process if coverage percentages fall below a predefined minimum.
  • Instrumentation Filters - Provides rules to include or exclude specific packages and classes from instrumentation to limit data collection.
  • Runtime Metrics Extraction - Enables retrieval of execution metrics from running processes via remote network connections without interrupting the application.
  • Large-Scale Codebase Analysis - Uses streaming patterns and depth-first traversals to analyze large projects with thousands of classes while maintaining low memory overhead.
  • Build Tool Integrations - Provides native extensions and tasks to integrate coverage data collection into build automation systems.
  • Remote Execution Data Extraction - Transmits execution metrics from a running process to an external collector via a dedicated network protocol.
  • Cyclomatic Complexity Analyzers - Computes the minimum number of paths through a method to determine the test cases required for full coverage.
  • Coverage Threshold Validation - Enforces minimum code coverage thresholds during the build process to ensure software meets quality standards.
  • Quality Gates - Integrates with CI/CD pipelines to block code progression if specific coverage quality gates are not met.
  • Visual Coverage Mapping - Displays execution data directly within code editors using visual highlights and gutter decorations.
  • Report Generators - Transforms raw binary execution data into human-readable reports to identify untested sections of the application.
  • Code Coverage Reportings - Compares execution metrics against source code to generate reports identifying untested lines and branches.
  • Testing Frameworks - Java code coverage library.

Star history

Star history chart for jacoco/jacocoStar history chart for jacoco/jacoco

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does jacoco/jacoco do?

JaCoCo is a Java code coverage tool and bytecode instrumenter that measures which parts of source code are executed during tests. It functions as a runtime agent to monitor application execution on the fly or as a library for offline bytecode instrumentation, allowing it to capture execution data in environments where runtime agents are restricted.

What are the main features of jacoco/jacoco?

The main features of jacoco/jacoco are: Code Coverage Analysis, Java Agents, Code Quality Analysis Tools, Execution Tracking, Bytecode-to-Source Mapping, Bytecode Instrumentation Agents, Class Definition Hashing, Offline Bytecode Instrumentation.

What are some open-source alternatives to jacoco/jacoco?

Open-source alternatives to jacoco/jacoco include: colszowka/simplecov — SimpleCov is a Ruby code coverage tool and analysis engine used to track which lines, branches, and methods of code… gotwarlost/istanbul — Istanbul is a JavaScript code coverage tool and instrumentation engine that measures the execution of statements,… istanbuljs/nyc — nyc is a JavaScript code coverage tool and command-line interface that instruments source files to track the execution… oldmanpushcart/greys-anatomy — This project is a Java runtime diagnostic tool and bytecode instrumentation framework. It provides a remote… jbachorik/btrace — btrace is a Java dynamic tracing tool and instrumentation framework designed for real-time diagnostics. It enables the… sebastianbergmann/php-code-coverage — php-code-coverage is a PHP library and analysis tool designed to track runtime execution and determine which parts of…

Open-source alternatives to Jacoco

Similar open-source projects, ranked by how many features they share with Jacoco.
  • colszowka/simplecovcolszowka avatar

    colszowka/simplecov

    4,902View on GitHub↗

    SimpleCov is a Ruby code coverage tool and analysis engine used to track which lines, branches, and methods of code execute during tests. It functions as a coverage threshold enforcer and test suite aggregator, recording execution data to identify untested areas of an application. The tool distinguishes itself through the ability to merge coverage results from parallel worker processes and subprocesses into a single unified report. It supports baseline comparison to detect coverage regressions and can gather data from code executed via dynamic evaluation methods, such as those used in templat

    Ruby
    View on GitHub↗4,902
  • gotwarlost/istanbulgotwarlost avatar

    gotwarlost/istanbul

    8,662View on GitHub↗

    Istanbul is a JavaScript code coverage tool and instrumentation engine that measures the execution of statements, lines, functions, and branches. It functions as a test coverage analysis tool capable of monitoring code across unit, functional, and browser tests to identify untested areas of a codebase. The project distinguishes itself through a transparent instrumentation engine that uses module loader hooks to inject tracking code without requiring manual source modifications. It supports distributed test reporting by aggregating fragmented coverage data from multiple concurrent processes in

    JavaScript
    View on GitHub↗8,662
  • istanbuljs/nycistanbuljs avatar

    istanbuljs/nyc

    5,746View on GitHub↗

    nyc is a JavaScript code coverage tool and command-line interface that instruments source files to track the execution of lines, branches, and functions during test runs. It acts as a wrapper for Node.js test runners, intercepting the module loading process to collect coverage data. The tool functions as a coverage data merger and build gating tool, allowing users to combine results from multiple independent test runs or child processes into a single unified report. It can automatically fail the build process if code coverage percentages fall below defined minimum thresholds. The project sup

    JavaScriptcode-coverageistanbuljavascript
    View on GitHub↗5,746
  • oldmanpushcart/greys-anatomyoldmanpushcart avatar

    oldmanpushcart/greys-anatomy

    4,007View on GitHub↗

    This project is a Java runtime diagnostic tool and bytecode instrumentation framework. It provides a remote troubleshooting interface for inspecting live Java systems, analyzing execution traces, and monitoring method performance without requiring application restarts. The system distinguishes itself through its ability to modify Java classes at runtime to capture parameters and return values, combined with a JavaScript-based scripting engine for custom diagnostic logic. It further supports collaborative live debugging, allowing multiple users to connect to a single remote process simultaneou

    Javadiagnosisgreysjvmti
    View on GitHub↗4,007
  • See all 30 alternatives to Jacoco→