{"id":31324806,"url":"https://github.com/orbl/rusty_coverage_output_generator","last_synced_at":"2026-05-17T17:10:33.178Z","repository":{"id":315433409,"uuid":"1009129873","full_name":"orbl/rusty_coverage_output_generator","owner":"orbl","description":"Drop-in replacement for Bazels original java based CoverageOutputGenerator","archived":false,"fork":false,"pushed_at":"2025-06-30T12:26:33.000Z","size":113,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-26T16:44:53.453Z","etag":null,"topics":["bazel","coverage","rust"],"latest_commit_sha":null,"homepage":"https://github.com/orbl/rusty_coverage_output_generator","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orbl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-26T16:13:22.000Z","updated_at":"2025-07-02T18:22:38.000Z","dependencies_parsed_at":"2025-09-18T16:45:56.389Z","dependency_job_id":"52688b06-25a8-49df-b212-fc154f31ef6d","html_url":"https://github.com/orbl/rusty_coverage_output_generator","commit_stats":null,"previous_names":["orbl/rusty_coverage_output_generator"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/orbl/rusty_coverage_output_generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbl%2Frusty_coverage_output_generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbl%2Frusty_coverage_output_generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbl%2Frusty_coverage_output_generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbl%2Frusty_coverage_output_generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orbl","download_url":"https://codeload.github.com/orbl/rusty_coverage_output_generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbl%2Frusty_coverage_output_generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33147342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T09:28:26.183Z","status":"ssl_error","status_checked_at":"2026-05-17T09:27:52.702Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bazel","coverage","rust"],"created_at":"2025-09-25T21:40:14.825Z","updated_at":"2026-05-17T17:10:33.173Z","avatar_url":"https://github.com/orbl.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rusty Coverage Output Generator\n\nA fast, drop-in replacement for Bazel's CoverageOutputGenerator written in Rust.\n\n## Overview\n\nThis tool merges and processes coverage data from multiple formats (LCOV, gcov text, gcov JSON) into a unified LCOV output format. It's designed to be a high-performance alternative to the Java-based CoverageOutputGenerator used in Bazel builds.\n\n## Features\n\n### Core Capabilities\n- **Multiple Format Support**: LCOV, gcov text format, and gcov JSON format\n- **High Performance**: Parallel processing with Rayon for fast merging of large coverage datasets\n- **100% Java Compatibility**: Produces identical output to the original Java implementation\n- **GZIP Support**: Automatic detection and decompression of compressed coverage files\n- **Robust Error Handling**: Comprehensive validation and clear error messages\n- **CLI Compatible**: Drop-in replacement with identical command-line interface\n\n### Changes from Original\n- **Dropped Features**:\n  - Serial processing (this version uses parallel processing only)\n  - BA line records (not valid LCOV format)\n\n## Supported Formats\n\n### Input Formats\n- **LCOV**: Standard Linux Test Project format\n- **gcov Text**: Traditional gcov intermediate format\n- **gcov JSON**: Modern JSON-based gcov format\n- **Compressed Files**: Automatic GZIP decompression\n\n### Output Format\n- **LCOV**: Industry-standard format compatible with all major coverage tools\n\n## Usage\n\n### Quick Start with Bazel\n\nFor quick testing, add this to your root `MODULE.bazel` and create an alias in your build file. Then run bazel coverage with `--coverage_report_generator=//:coverage_report_generator`:\n\n**MODULE.bazel**\n```starlark\nhttp_archive = use_repo_rule(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\n\nhttp_archive(\n    name = \"rusty_coverage_output_generator\",\n    sha256 = \"21625bed96e0c3856dd12d2ea6d0cf5d7c459fb66024cab3bc6bfdffe0e782f2\",\n    urls = [\n        \"https://github.com/orbl/rusty_coverage_output_generator/releases/download/v1.0/coverage_output_generator_release.tar\",\n    ],\n)\n```\n\n**BUILD**\n```starlark\nalias(\n    name = \"coverage_report_generator\",\n    actual = \"@rusty_coverage_output_generator//:cog\",\n    tags = [\"manual\"],\n)\n```\n\n### Building Your Own Release\n\nIf you wish to make your own version, create the release tar by running:\n```bash\nbazel build coverage_output_generator_release\n```\n\n### Local Testing Setup\n\nYou can serve the file on localhost for quick testing:\n\n```python\n#!/usr/bin/env python3\nfrom flask import Flask, send_file\n\napp = Flask(__name__)\nFILE_PATH = \"bazel-bin/coverage_output_generator_release.tar\"\n\n@app.route('/bazel-bin/coverage_output_generator_release.tar')\ndef serve_file():\n    return send_file(FILE_PATH)\n\nif __name__ == \"__main__\":\n    app.run(host='0.0.0.0', port=8000)\n```\n\n## Development Notes\n\n- **Platform Support**: This has only been tested on Linux\n- **Development**: Built with ChatGPT 4.1 and Claude Sonnet 4 with human intervention and oversight\n- **Error Handling**: The original Java version allowed errors to pass with no warnings. This implementation is less forgiving, which should save you hours of debugging to find out why your coverage looks weird.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forbl%2Frusty_coverage_output_generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forbl%2Frusty_coverage_output_generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forbl%2Frusty_coverage_output_generator/lists"}