Code coverage for Ruby with a powerful configuration library and automatic merging of coverage across test suites
This report summarizes scanner evidence for simplecov-ruby/simplecov, a Ruby project with 4,927 GitHub stars. SynthScan examined 90,581 lines of code across 620 source files, recording 145 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 1.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 145 finding(s).
Are imports declared and package/API names verified? 0 finding(s).
Are wrappers, guards, and repeated structures necessary? 65 finding(s).
Which changes need focused human review? 145 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 145 distinct pattern matches across 5 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .duel.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | .rubocop.yml | 1 | # Standard owns the style, so this file carries only what Standard leaves to | COMMENT |
| LOW | .simplecov_baseline.yml | 1 | # Per-file coverage floors. A file that drops below its floor fails the run, | COMMENT |
| LOW | benchmarks/simulate_coverage.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | benchmarks/report_scale.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | benchmarks/collate.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | benchmarks/collate/shape.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | .github/workflows/dependabot_assets.yml | 1 | # Dependabot bumps html_frontend dependencies but cannot run the compile | COMMENT |
| LOW | lib/simplecov/production.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/history.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/parallel_coordination.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/parallel_coordination.rb | 41 | COMMENT | |
| LOW | lib/simplecov/current_run.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/result_processing.rb | 161 | # loaded, and the merged result is the one that reports dropped source | COMMENT |
| LOW | lib/simplecov/directive.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/process.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/parallel_adapters.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/result_adapter.rb | 41 | # address widths vary by runtime. | COMMENT |
| LOW | lib/simplecov/command_guesser.rb | 41 | return unless groups && number | COMMENT |
| LOW | lib/simplecov/result.rb | 21 | # Carried into the resultset so a merge elsewhere can inject the ones | COMMENT |
| LOW | lib/simplecov/test_tracker.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/unloaded_file_injector.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/load_global_config.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/result_merger.rb | 41 | # feeding every merge-side accumulator in a single pass: the tracked | COMMENT |
| LOW | lib/simplecov/simulate_coverage.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/simulate_coverage.rb | 21 | # Branches and methods are enumerated by static analysis. Earlier behavior | COMMENT |
| LOW | lib/simplecov/test_file_name.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/deprecation.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/static_coverage_extractor.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/static_coverage_extractor.rb | 41 | end | COMMENT |
| LOW | lib/simplecov/color.rb | 21 | # default `:auto` falls through), then `NO_COLOR`, then `FORCE_COLOR`, then | COMMENT |
| LOW | lib/simplecov/view_coverage.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/context_map.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/baseline.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/configuration/filters.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/configuration/merging.rb | 61 | # Whether SimpleCov's selected final process owns merge processing: waiting | COMMENT |
| LOW | lib/simplecov/configuration/merging.rb | 101 | Deprecation.warn("`SimpleCov.use_merging` is deprecated. " \ | COMMENT |
| LOW | lib/simplecov/configuration/test_tracking.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/combine/identity_interner.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/combine/lines_combiner.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/test_tracker/constant_watch.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/test_tracker/delta.rb | 81 | # and eql? alike. `==` is kept because it is the faster of the two. | COMMENT |
| LOW | lib/simplecov/test_tracker/method_bodies.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/view_coverage/template_compiler.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/cli/ratchet.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/cli/real_path.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/cli/patch.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/cli/dead_code.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/cli/patch/changed_lines.rb | 41 | end | COMMENT |
| LOW | lib/simplecov/cli/affected/narrowing.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/cli/affected/narrowing.rb | 21 | # The recording's line numbers are the ones that matter, and the | COMMENT |
| LOW | lib/simplecov/cli/serve/static_file_handler.rb | 41 | # /events stream on. A route may hold the socket for as long as it | COMMENT |
| LOW | lib/simplecov/result_merger/unloaded_files.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/directive/erb.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/production/file_sink.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …mplecov/static_coverage_extractor/condition_folding.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/static_coverage_extractor/visitor.rb | 21 | COMMENT | |
| LOW | …ecov/static_coverage_extractor/location_conventions.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/profiles/strict.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/simplecov/source_file/ruby_data_parser.rb | 1 | # frozen_string_literal: true | COMMENT |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spec/return_codes_spec.rb | 20 | def stderr_without_report_summary(stderr) | CODE |
| LOW | spec/support/sandbox_project.rb | 77 | def run_command_and_expect_success(command, env: {}, timeout: 60) | CODE |
| LOW | spec/support/sandbox_project.rb | 113 | def expect_coverage_report_generated(result, coverage_dir: "coverage") | CODE |
| LOW | spec/support/sandbox_project.rb | 120 | def expect_no_coverage_report(result, coverage_dir: "coverage") | CODE |
| LOW | spec/support/sandbox_project.rb | 166 | def sandbox_command_environment(overrides) | CODE |
| LOW | spec/support/sandbox_project.rb | 224 | def scrub_untracked_coverage_dirs(source) | CODE |
| LOW | spec/support/fail_rspec_on_ruby_warning.rb | 64 | def write_other_warnings_to_tmp(other_warnings) | CODE |
| LOW | spec/sandbox/groups_and_filters_basic_spec.rb | 15 | def expect_faked_project_file_percents(data) | CODE |
| LOW | spec/sandbox/skipping_code_blocks_manually_spec.rb | 56 | def expect_unchanged_coverage_with_nocov_file(source) | CODE |
| LOW | spec/sandbox/unicode_compatibility_spec.rb | 47 | def expect_report_with_unicode_file(source) | CODE |
| LOW | spec/sandbox/groups_using_filter_class_spec.rb | 15 | def expect_faked_project_file_percents(data) | CODE |
| LOW | spec/sandbox/config_tracked_files_collate_spec.rb | 22 | def expect_tracked_file_percents(data, framework_specific:) | CODE |
| LOW | spec/sandbox/config_enable_for_subprocesses_spec.rb | 12 | def expect_fully_covered_single_file(data) | CODE |
| LOW | spec/sandbox/skipping_with_directives_spec.rb | 70 | def expect_unchanged_coverage_with_directive_file(result) | CODE |
| LOW | spec/sandbox/groups_and_filters_complex_spec.rb | 16 | def expect_all_groups_hold_meta_magic(data) | CODE |
| LOW | spec/sandbox/config_nocov_token_spec.rb | 54 | def expect_skippit_block_skipped(config) | CODE |
| LOW | spec/sandbox/rspec_conductor_spec.rb | 48 | def configure_conductor_coverage(*settings) | CODE |
| LOW | spec/simple_cov/configuration_spec.rb | 1375 | def configure_parallel_worker(current, groups: "3", dir: "coverage/turbo_tests/1", merging: true) | CODE |
| LOW | spec/simple_cov/configuration_spec.rb | 3296 | def configuring_in_another_thread(owner) | CODE |
| LOW | spec/simple_cov/result_merger_spec.rb | 1852 | def probed_while_holding_writelock(mode) | CODE |
| LOW | spec/simple_cov/run_identity_spec.rb | 190 | def restore_memoized_identity(saved) | CODE |
| LOW | spec/simple_cov/production_spec.rb | 22 | def start_without_flush_thread(**) | CODE |
| LOW | spec/simple_cov/production_spec.rb | 184 | def flush_failing_then_succeeding(second_result) | CODE |
| LOW | spec/simple_cov/view_coverage/template_compiler_spec.rb | 83 | def action_view_template_with_registry(handlers) | CODE |
| LOW | spec/simple_cov/formatter/html_formatter_spec.rb | 100 | def render_standalone_as_ascii(dir) | CODE |
| LOW | lib/simplecov/parallel_result_merger.rb | 165 | def warn_about_failed_workers(failed, total) | CODE |
| LOW | lib/simplecov/parallel_coordination.rb | 63 | def wait_for_parallel_results(expected, native_wait: false) | CODE |
| LOW | lib/simplecov/parallel_coordination.rb | 111 | def warn_about_incomplete_parallel_results(expected, seen) | CODE |
| LOW | lib/simplecov/result_adapter.rb | 119 | def aggregate_duplicated_branches(cover_statistic) | CODE |
| LOW | lib/simplecov/result_adapter.rb | 127 | def adapt_oneshot_lines_if_needed(file_name, cover_statistic) | CODE |
| LOW | lib/simplecov/exit_handling.rb | 117 | def report_processing_failure(exit_status) | CODE |
| LOW | lib/simplecov/result.rb | 135 | def initialize_resultset_metadata(tracked_files, run_id, worker_id, contexts) | CODE |
| LOW | lib/simplecov/result.rb | 142 | def warn_about_missing_source_files(missing) | CODE |
| LOW | lib/simplecov/result_merger.rb | 103 | def warn_about_expired_results(expired_command_names) | CODE |
| LOW | lib/simplecov/lines_classifier.rb | 90 | def directive_disabled_line_set(lines) | CODE |
| LOW | lib/simplecov/coverage_violations.rb | 98 | def effective_per_file_thresholds(file, defaults, overrides) | CODE |
| LOW | lib/simplecov/coverage_violations.rb | 121 | def file_missed_cap_violation(file, criterion, maximum) | CODE |
| LOW | lib/simplecov/exit_codes/exit_code_handling.rb | 40 | def maximum_missed_per_file_check(result, coverage_limits) | CODE |
| LOW | lib/simplecov/configuration/filters.rb | 45 | def track_files_replacement_hint(glob) | CODE |
| LOW | lib/simplecov/configuration/coverage_criteria.rb | 116 | def raise_if_criterion_disabled(criterion) | CODE |
| LOW | lib/simplecov/configuration/coverage_criteria.rb | 131 | def raise_if_criterion_unsupported(criterion) | CODE |
| LOW | lib/simplecov/configuration/ignored_entries.rb | 56 | def raise_if_branch_type_unsupported(type) | CODE |
| LOW | lib/simplecov/configuration/ignored_entries.rb | 64 | def raise_if_method_type_unsupported(type) | CODE |
| LOW | lib/simplecov/configuration/coverage.rb | 34 | def enable_coverage_criterion(criterion, enabled:, oneshot:) | CODE |
| LOW | lib/simplecov/configuration/coverage.rb | 40 | def resolve_criterion_variant(criterion, oneshot) | CODE |
| LOW | lib/simplecov/configuration/coverage.rb | 60 | def store_maximum_missed_per_file(criterion, count, target) | CODE |
| LOW | lib/simplecov/configuration/missed_caps.rb | 38 | def raise_on_invalid_missed_cap(cap, setting) | CODE |
| LOW | lib/simplecov/configuration/missed_caps.rb | 45 | def missed_per_file_replacement(counts) | CODE |
| LOW | lib/simplecov/configuration/thresholds.rb | 11 | def raise_on_invalid_coverage(coverage, coverage_setting) | CODE |
| LOW | lib/simplecov/configuration/thresholds.rb | 69 | def minimum_coverage_by_group(coverage = nil) | CODE |
| LOW | lib/simplecov/configuration/thresholds.rb | 96 | def partition_per_file_thresholds(coverage) | CODE |
| LOW | lib/simplecov/configuration/thresholds.rb | 115 | def minimum_possible_coverage_exceeded(coverage_option) | CODE |
| LOW | lib/simplecov/configuration/thresholds.rb | 122 | def per_file_coverage_replacement(defaults, overrides) | CODE |
| LOW | lib/simplecov/configuration/thresholds.rb | 133 | def per_group_coverage_replacement(coverage) | CODE |
| LOW | lib/simplecov/test_tracker/framework_hooks.rb | 157 | def install_minitest_hook_when_loaded(root = Object) | CODE |
| LOW | lib/simplecov/view_coverage/template_compiler.rb | 51 | def compile_into_throwaway_module(template) | CODE |
| LOW | lib/simplecov/cli/dotfile.rb | 76 | def read_production_coverage_from(dotfile) | CODE |
| LOW | lib/simplecov/cli/merge.rb | 92 | def warn_about_duplicate_command_names(parsed, stderr) | CODE |
| LOW | lib/simplecov/result_merger/resultset_run_identity.rb | 13 | def worker_identities_for_run(results, run_id, started_at) | CODE |
| LOW | lib/simplecov/formatter/coverage_json_writer.rb | 33 | def warn_if_concurrent_overwrite(path, result) | CODE |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lib/simplecov/view_coverage/template_compiler.rb | 10 | # Defining the method is the whole trick. `Template#compile` hands the | COMMENT |
| MEDIUM | …ils/rspec_rails/config/initializers/wrap_parameters.rb | 3 | # This file contains settings for ActionController::ParamsWrapper which | COMMENT |
| MEDIUM | test_projects/rails/rspec_rails/spec/rails_helper.rb | 1 | # This file is copied to spec/ when you run 'rails generate rspec:install' | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lib/simplecov/exit_handling.rb | 6 | # `at_exit` orchestration: post-suite report generation, threshold checks, | COMMENT |
| MEDIUM | lib/simplecov/formatter/base.rb | 9 | # Shared scaffolding for formatters that write a coverage report to an | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmarks/report_scale.rb | 7 | # Usage: | COMMENT |
| LOW | benchmarks/collate.rb | 8 | # Usage: | COMMENT |