Repository Analysis

simplecov-ruby/simplecov

Code coverage for Ruby with a powerful configuration library and automatic merging of coverage across test suites

4.3 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of simplecov-ruby/simplecov, a Ruby project with 4,910 GitHub stars. SynthScan v2.0 examined 28,525 lines of code across 294 source files, recording 107 pattern matches distributed across 6 syntactic categories. The overall adjusted score of 4.3 places this repository in the Likely human-written band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

4.3
Adjusted Score
4.3
Raw Score
100%
Time Factor
2026-07-14
Last Push
4.9K
Stars
Ruby
Language
28.5K
Lines of Code
294
Files
107
Pattern Hits
2026-07-14
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 0MEDIUM 7LOW 100

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 107 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Over-Commented Block69 hits · 69 pts
SeverityFileLineSnippetContext
LOWspec/simplecov_spec.rb1101 endCOMMENT
LOWspec/helper.rb1# frozen_string_literal: trueCOMMENT
LOWspec/helper.rb41# asserts the same warning (the suite runs in random order).COMMENT
LOWspec/helper.rb61 # the dogfood `Result.new`, not into `SimpleCov.filters`, so theyCOMMENT
LOWspec/helper.rb101 # formatter's `warn`-based status line and any threshold-violationCOMMENT
LOWspec/static_coverage_extractor_spec.rb141 # Coverage doesn't emit a branch entry for `||=`, neither do we.COMMENT
LOWspec/support/with_env.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov.rb21COMMENT
LOWlib/simplecov.rb81 # SimpleCov.start 'rails' # using a profileCOMMENT
LOWlib/simplecov.rb121COMMENT
LOWlib/simplecov/profiles.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/profiles.rb21COMMENT
LOWlib/simplecov/parallel_coordination.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/parallel_coordination.rb61 #COMMENT
LOWlib/simplecov/result_processing.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/directive.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/directive.rb21 #COMMENT
LOWlib/simplecov/filter.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/process.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/parallel_adapters.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/parallel_adapters.rb21 # - `GenericAdapter` — env-var-only detection for runners that followCOMMENT
LOWlib/simplecov/parallel_adapters.rb41 # are prepended (#register puts new entries at the front) soCOMMENT
LOWlib/simplecov/result_adapter.rb41 # from different processes can be merged. Anonymous class names likeCOMMENT
LOWlib/simplecov/load_global_config.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/autostart.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/coverage_statistics.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/simulate_coverage.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/simulate_coverage.rb21 # know about. This keeps "relevant lines" identical whether a file wasCOMMENT
LOWlib/simplecov/deprecation.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/static_coverage_extractor.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/static_coverage_extractor.rb21 # When Prism isn't available, `available?` returns false and SimulateCoverageCOMMENT
LOWlib/simplecov/static_coverage_extractor.rb61 visitor.visit(result.value)COMMENT
LOWlib/simplecov/static_coverage_extractor.rb81 #COMMENT
LOWlib/simplecov/color.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/configuration.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/configuration.rb41 # callers can override with an arbitrary absolute path — handy forCOMMENT
LOWlib/simplecov/configuration.rb121 # is actively tracking, or a `@result` has already been assembledCOMMENT
LOWlib/simplecov/configuration/filters.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/configuration/filters.rb21 #COMMENT
LOWlib/simplecov/configuration/filters.rb41 def cover_filtersCOMMENT
LOWlib/simplecov/configuration/merging.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/configuration/coverage.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/configuration/coverage.rb21 # coverage :method, minimum: 100COMMENT
LOWlib/simplecov/configuration/formatting.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/configuration/formatting.rb41 # Sets the configured formatters. Equivalent to `formatters [...]`.COMMENT
LOWlib/simplecov/configuration/formatting.rb81 # downstream tool reads the project's source files directly andCOMMENT
LOWlib/simplecov/combine/results_combiner.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/combine/methods_combiner.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/combine/branches_combiner.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/combine/lines_combiner.rb21COMMENT
LOWlib/simplecov/parallel_adapters/base.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/parallel_adapters/base.rb21 falseCOMMENT
LOWlib/simplecov/parallel_adapters/generic.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/parallel_adapters/parallel_tests.rb21 ensure_loadedCOMMENT
LOWlib/simplecov/parallel_adapters/parallel_tests.rb61 # for other reasons (custom subprocess coordination, CI sharding,COMMENT
LOWlib/simplecov/cli/dotfile.rb21 rescue LoadError, StandardError => eCOMMENT
LOWlib/simplecov/cli/diff.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/formatter/base.rb1# frozen_string_literal: trueCOMMENT
LOWlib/simplecov/formatter/base.rb61 endCOMMENT
LOWlib/simplecov/profiles/rails.rb21 # which both injects unloaded files and scopes the report to the matchCOMMENT
9 more matches not shown…
Hyper-Verbose Identifiers28 hits · 28 pts
SeverityFileLineSnippetContext
LOWspec/return_codes_spec.rb25 def stderr_without_report_summary(stderr)CODE
LOWspec/support/fail_rspec_on_ruby_warning.rb65 def write_other_warnings_to_tmp(other_warnings)CODE
LOWlib/simplecov/parallel_coordination.rb74 def wait_for_parallel_results(expected, native_wait: false)CODE
LOWlib/simplecov/parallel_coordination.rb116 def warn_about_incomplete_parallel_results(expected, seen)CODE
LOWlib/simplecov/result_adapter.rb78 def adapt_oneshot_lines_if_needed(file_name, cover_statistic)CODE
LOWlib/simplecov/exit_handling.rb98 def exit_and_report_previous_error(exit_status)CODE
LOWlib/simplecov/result.rb138 def warn_about_missing_source_files(missing, input_size)CODE
LOWlib/simplecov/result_merger.rb70 def warn_about_expired_results(expired_command_names)CODE
LOWlib/simplecov/lines_classifier.rb54 def directive_disabled_line_set(lines)CODE
LOWlib/simplecov/coverage_violations.rb84 def effective_per_file_thresholds(file, defaults, overrides)CODE
LOWlib/simplecov/configuration/filters.rb70 def track_files_replacement_hint(glob)CODE
LOWlib/simplecov/configuration/coverage_criteria.rb142 def raise_if_criterion_disabled(criterion)CODE
LOWlib/simplecov/configuration/coverage_criteria.rb151 def raise_if_criterion_unsupported(criterion)CODE
LOWlib/simplecov/configuration/ignored_entries.rb47 def raise_if_branch_type_unsupported(type)CODE
LOWlib/simplecov/configuration/ignored_entries.rb55 def raise_if_method_type_unsupported(type)CODE
LOWlib/simplecov/configuration/coverage.rb75 def enable_coverage_criterion(criterion, enabled:, oneshot:)CODE
LOWlib/simplecov/configuration/thresholds.rb22 def raise_on_invalid_coverage(coverage, coverage_setting)CODE
LOWlib/simplecov/configuration/thresholds.rb98 def minimum_coverage_by_group(coverage = nil)CODE
LOWlib/simplecov/configuration/thresholds.rb124 def partition_per_file_thresholds(coverage)CODE
LOWlib/simplecov/configuration/thresholds.rb142 def minimum_possible_coverage_exceeded(coverage_option)CODE
LOWlib/simplecov/configuration/thresholds.rb149 def per_file_coverage_replacement(defaults, overrides)CODE
LOWlib/simplecov/configuration/thresholds.rb161 def per_group_coverage_replacement(coverage)CODE
LOWlib/simplecov/cli/merge.rb88 def warn_about_duplicate_command_names(parsed, stderr)CODE
LOWlib/simplecov/formatter/json_formatter.rb51 def warn_if_concurrent_overwrite(path, result)CODE
LOW…ecov/formatter/json_formatter/result_hash_formatter.rb97 def format_coverage_statistics(statistics)CODE
LOWlib/simplecov/source_file/ruby_data_parser.rb83 def quote_inspected_class_segments(str)CODE
LOWlib/simplecov/source_file/source_loader.rb44 def set_encoding_based_on_magic_comment(file, line)CODE
LOWhtml_frontend/src/bar_width.ts47export function scheduleEqualizeBarWidths(): void {CODE
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMlib/simplecov/profiles.rb13 # Define a SimpleCov profile:COMMENT
MEDIUMlib/simplecov/configuration/filters.rb129 # Define a display group for files. Same matcher grammar as `skip`,COMMENT
MEDIUM…ils/rspec_rails/config/initializers/wrap_parameters.rb3# This file contains settings for ActionController::ParamsWrapper whichCOMMENT
MEDIUMtest_projects/rails/rspec_rails/spec/rails_helper.rb1# This file is copied to spec/ when you run 'rails generate rspec:install'COMMENT
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMlib/simplecov/exit_handling.rb5# `at_exit` orchestration: post-suite report generation, thresholdCOMMENT
MEDIUMlib/simplecov/formatter/base.rb9 # Shared scaffolding for formatters that write a coverage report toCOMMENT
AI Slop Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMspec/static_coverage_extractor_spec.rb153 # differential harness that pins them tuple-for-tuple: everyCOMMENT
LOWlib/simplecov/profiles/strict.rb12# accepted (they just add to the configured criteria set), but theCOMMENT
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWlib/simplecov/source_file.rb159 # Check if any branches missing on given line numberCOMMENT
LOWlib/simplecov/source_file/branch.rb34 # Check if branch missed or notCOMMENT