Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
d150e7d
feat(py): accept CLI metric names in metrics=
dekobon Oct 18, 2026
73c42a1
feat(catalog): add metric scale and Threshold
dekobon Oct 18, 2026
02b8def
fix(cli): baseline negative MI values
dekobon Oct 18, 2026
0ec6774
fix(cli,output): gate and rank on Threshold
dekobon Oct 18, 2026
cb6150f
refactor(catalog): retire lower_is_worse
dekobon Oct 18, 2026
ba906ae
fix(cli): skip empty MI in averages and gates
dekobon Oct 18, 2026
20cbf1d
refactor(report): share the overview row and language totals
dekobon Oct 20, 2026
826384f
docs(changelog): record the metric value-semantics layer
dekobon Oct 18, 2026
2accc68
feat(mi): size on ploc, SEI on ln and the ratio
dekobon Oct 18, 2026
cc565f3
refactor(ast): tidy the doc-placement helpers
dekobon Oct 18, 2026
0f2573c
fix(loc): treat a parenthesized Python docstring as one
dekobon Oct 18, 2026
988e728
perf(loc): linearize C#, PHP and Kotlin doc tests
dekobon Oct 19, 2026
396c314
fix(loc): count Perl POD placed after __END__
dekobon Oct 19, 2026
cc5923e
fix(loc): bind a doc comment to what follows it
dekobon Oct 19, 2026
020760a
fix(loc): bind C#, PHP and JS doc comments
dekobon Oct 19, 2026
3e8be02
fix(loc): bind C-family doc comments under Doxygen
dekobon Oct 19, 2026
97474b5
docs(changelog): record the LOC and doc-comment fixes
dekobon Oct 19, 2026
f422637
docs(lessons): add lessons 99 and 100, extend lesson 98
dekobon Oct 19, 2026
bf771eb
deps: bump webpki-root-certs to 1.0.10 and rustls-webpki to 0.103.16
dekobon Oct 20, 2026
1149499
test(loc): pin three doc-binding shapes and DocBinding's defaults
dekobon Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 71 additions & 64 deletions .bca-baseline.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ version = 6
tier = "soft"
headroom = 0.95
mi_charges_docs = false
mi_formula = 2

[[entry]]
path = "big-code-analysis-ast/src/alterator.rs"
Expand Down Expand Up @@ -226,49 +227,13 @@ value = 5.0
path = "big-code-analysis-ast/src/checker.rs"
qualified = "<file>"
metric = "loc.ploc"
value = 568.0
value = 584.0

[[entry]]
path = "big-code-analysis-ast/src/checker.rs"
qualified = "<file>"
metric = "loc.sloc"
value = 1373.0

[[entry]]
path = "big-code-analysis-ast/src/checker.rs"
qualified = "Checker::holds_doc_comment_in_body"
metric = "nargs"
value = 5.0

[[entry]]
path = "big-code-analysis-ast/src/checker/groovy.rs"
qualified = "GroovyCode::holds_doc_comment_in_body"
metric = "nargs"
value = 5.0

[[entry]]
path = "big-code-analysis-ast/src/checker/java.rs"
qualified = "JavaCode::holds_doc_comment_in_body"
metric = "nargs"
value = 5.0

[[entry]]
path = "big-code-analysis-ast/src/checker/kotlin.rs"
qualified = "KotlinCode::holds_doc_comment_in_body"
metric = "nargs"
value = 5.0

[[entry]]
path = "big-code-analysis-ast/src/checker/php.rs"
qualified = "PhpCode::holds_doc_comment_in_body"
metric = "nargs"
value = 5.0

[[entry]]
path = "big-code-analysis-ast/src/checker/rust.rs"
qualified = "RustCode::holds_doc_comment_in_body"
metric = "nargs"
value = 5.0
value = 1411.0

[[entry]]
path = "big-code-analysis-ast/src/getter.rs"
Expand Down Expand Up @@ -312,6 +277,48 @@ qualified = "RubyCode::get_op_type"
metric = "halstead.effort"
value = 120642.89096069236

[[entry]]
path = "big-code-analysis-ast/src/lang_helpers/doc_comment.rs"
qualified = "<file>"
metric = "loc.ploc"
value = 632.0

[[entry]]
path = "big-code-analysis-ast/src/lang_helpers/doc_comment.rs"
qualified = "bind_leading"
metric = "nargs"
value = 5.0

[[entry]]
path = "big-code-analysis-ast/src/lang_helpers/doc_comment.rs"
qualified = "bound_doc_run"
metric = "halstead.effort"
value = 74870.34845140431

[[entry]]
path = "big-code-analysis-ast/src/lang_helpers/doc_comment.rs"
qualified = "bound_doc_run"
metric = "nexits"
value = 5.0

[[entry]]
path = "big-code-analysis-ast/src/lang_helpers/doc_comment.rs"
qualified = "joined_run"
metric = "nargs"
value = 5.0

[[entry]]
path = "big-code-analysis-ast/src/lang_helpers/doxygen.rs"
qualified = "literal_end"
metric = "cyclomatic"
value = 19.0

[[entry]]
path = "big-code-analysis-ast/src/lang_helpers/doxygen.rs"
qualified = "literal_end"
metric = "nexits"
value = 6.0

[[entry]]
path = "big-code-analysis-ast/src/node.rs"
qualified = "Node<'a>"
Expand Down Expand Up @@ -364,13 +371,13 @@ value = 7.0
path = "big-code-analysis-cli/src/baseline.rs"
qualified = "Baseline::from_str"
metric = "halstead.effort"
value = 61984.213363755734
value = 56959.04904936

[[entry]]
path = "big-code-analysis-cli/src/baseline_diff.rs"
qualified = "BaselineDiff::compute"
metric = "halstead.effort"
value = 118241.28751025953
value = 96116.62210735636

[[entry]]
path = "big-code-analysis-cli/src/check_format.rs"
Expand Down Expand Up @@ -606,12 +613,6 @@ qualified = "write_table_with_tooltips"
metric = "nargs"
value = 6.0

[[entry]]
path = "big-code-analysis-cli/src/html_report/sections.rs"
qualified = "<file>"
metric = "loc.ploc"
value = 529.0

[[entry]]
path = "big-code-analysis-cli/src/html_report/sections.rs"
qualified = "write_language_section"
Expand All @@ -634,7 +635,7 @@ value = 49443.19551903411
path = "big-code-analysis-cli/src/markdown_report.rs"
qualified = "<file>"
metric = "loc.ploc"
value = 575.0
value = 633.0

[[entry]]
path = "big-code-analysis-cli/src/markdown_report.rs"
Expand All @@ -646,7 +647,7 @@ value = 5.0
path = "big-code-analysis-cli/src/markdown_report.rs"
qualified = "extract_summaries_inner"
metric = "abc"
value = 39.153543900903784
value = 40.124805295477756

[[entry]]
path = "big-code-analysis-cli/src/markdown_report.rs"
Expand Down Expand Up @@ -684,30 +685,24 @@ qualified = "select_for"
metric = "nargs"
value = 7.0

[[entry]]
path = "big-code-analysis-cli/src/threshold_suggestion.rs"
qualified = "closest_names"
metric = "halstead.effort"
value = 59984.93899693509

[[entry]]
path = "big-code-analysis-cli/src/threshold_suggestion.rs"
qualified = "edit_distance_with_cutoff"
metric = "halstead.effort"
value = 70177.90308128356

[[entry]]
path = "big-code-analysis-cli/src/thresholds.rs"
qualified = "<file>"
metric = "loc.ploc"
value = 554.0
value = 557.0

[[entry]]
path = "big-code-analysis-cli/src/thresholds.rs"
qualified = "ThresholdSet::evaluate_with_policy"
metric = "nargs"
value = 5.0

[[entry]]
path = "big-code-analysis-cli/src/thresholds.rs"
qualified = "parse_cli_threshold"
metric = "nexits"
value = 5.0

[[entry]]
path = "big-code-analysis-cli/src/vcs_command.rs"
qualified = "<file>"
Expand Down Expand Up @@ -886,7 +881,7 @@ value = 6.0
path = "big-code-analysis-py/src/sarif.rs"
qualified = "resolve_thresholds"
metric = "nexits"
value = 6.0
value = 7.0

[[entry]]
path = "big-code-analysis-py/src/types_codegen.rs"
Expand Down Expand Up @@ -1210,7 +1205,7 @@ value = 5.0
path = "src/metrics/loc/perl.rs"
qualified = "PerlCode::compute"
metric = "halstead.effort"
value = 59310.25237096207
value = 62449.60005820913

[[entry]]
path = "src/metrics/loc/perl.rs"
Expand Down Expand Up @@ -1282,7 +1277,7 @@ value = 6.0
path = "src/ops.rs"
qualified = "ops_inner"
metric = "halstead.effort"
value = 84452.11438842113
value = 86380.09140562497

[[entry]]
path = "src/output/checkstyle.rs"
Expand Down Expand Up @@ -1416,6 +1411,18 @@ qualified = "open_func_space"
metric = "nargs"
value = 6.0

[[entry]]
path = "src/suggestion.rs"
qualified = "closest_names"
metric = "halstead.effort"
value = 59984.93899693509

[[entry]]
path = "src/suggestion.rs"
qualified = "edit_distance_with_cutoff"
metric = "halstead.effort"
value = 67009.44460326429

[[entry]]
path = "src/suppression.rs"
qualified = "parse_native"
Expand Down
23 changes: 20 additions & 3 deletions .claude/rules/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,26 @@ gets reached for, and it destroyed an entire uncommitted rewrite a third
time during #1219. Read the file once into a variable, write each
perturbation from that string, and restore from it in a `finally` — the
backup then lives in memory and cannot be defeated by the working tree
changing underneath. Put the driver in a file rather than nesting quotes
through zsh into `python3 -c`, which is how those edits came to be
applied inconsistently in the first place.
changing underneath. Write that same copy to the driver's scratch
directory before the first edit, too, for the case below. Put the
driver in a file rather than nesting quotes through zsh into
`python3 -c`, which is how those edits came to be applied
inconsistently in the first place.

**An interrupted sweep leaves a mutant in the tree, and it looks like
a fix in progress.** A driver killed between a perturbation and its
restore — a server restart, a cancelled agent — never reaches its
`finally`, and production code keeps the mutant. What the next reader
sees is an uncommitted edit that compiles with a warning
(`unused variable: index`, for the dropped `index > 0 &&`) or fails one
test, which is exactly the shape of a half-finished fix, and the
natural response is to finish it. Before trusting partial edits from an
interrupted session, `cmp` each touched file against the on-disk copy
the driver wrote; where the agent that ran the driver can be resumed,
have it do the classification, since it knows which hunks were its own
edits and which its mutant. During #1613 a restart left one mutant in
`doxygen.rs` beside real edits; the resumed agent's `cmp` is what told
them apart.

**A broken harness reports a plausible failure count, not an error.**
In that same sweep the restore silently reverted the gate to its `main`
Expand Down
1 change: 0 additions & 1 deletion .rustfmt-bail-baseline.txt
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,5 @@ src/metrics/cyclomatic/irules.rs 2
src/metrics/cyclomatic/perl.rs 2
src/metrics/cyclomatic/php.rs 4
src/metrics/cyclomatic/ruby.rs 5
src/metrics/loc/perl.rs 6
src/vcs/error.rs 12
tests/common/mod.rs 2
Loading
Loading