judgev0.7.0

Showcase

Each example shows real output produced by judge itself, from files in the project repository. Input on the left, output on the right.

Combined report

examples/summary.ansiDetail: Combined report →
cargo judge --color always
⚠ Judge summary
  Analysis context: boundary rules: 0 not checked (no judge.toml)

  Evidence: 671   Advisory: 333

  Top issue rules:
     635x  duplicate-code
     243x  complexity-inflation
      39x  integer-cast-risk
      39x  maintainability-index
      22x  panic-in-lib

● Evidence-backed findings (671)
  - swallowed-result in write_cache [swallowed-result] (high confidence) at src/rules/slopsquat.rs:356
  - swallowed-result in write_cache [swallowed-result] (high confidence) at src/rules/slopsquat.rs:359
  - duplicate-code in build_functional_core_imperative_shell_heuristic [duplicate-code] (high confidence) at src/rules/principle.rs:550
  ... 668 more finding(s) (use --details to view all)

● Advisory heuristics (no verdict or score effect) (333) [advisory]
  - complexity-inflation in known_vulnerability_finding [complexity-inflation] (low confidence) at src/advisory/advisories.rs:330
  - complexity-inflation in tests::known_vulnerability_registry_example_still_triggers_the_rule [complexity-inflation] (low confidence) at src/advisory/advisories.rs:540
  - complexity-inflation in parse_lcov [complexity-inflation] (low confidence) at src/advisory/coverage.rs:155
  ... 330 more finding(s) (use --details to view all)

Next steps:
  • clone families, grouped and prioritized
    $ cargo judge dupes
  • every finding and location
    $ cargo judge --details
  • full machine-readable report in .judge/judge.json
    $ cargo judge --format json
  • tty
  • triage

Refactoring queue

examples/refactor.txtDetail: Refactoring queue →
cargo judge refactor
refactoring candidates: 50
  1. [warn] src/rules/principle.rs — 123 reasons: abstraction-inflation, complexity-inflation, duplicate-code, maintainability-index
  2. [warn] src/commands/analysis_commands.rs — 80 reasons: complexity-inflation, duplicate-code, maintainability-index, silent-default
  3. [warn] src/rules/dead_code.rs — 74 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index, silent-default, suppression-debt
  4. [warn] src/rules/pattern.rs — 72 reasons: complexity-inflation, duplicate-code, maintainability-index
  5. [warn] src/rules/deps.rs — 65 reasons: complexity-inflation, duplicate-code, maintainability-index, silent-default
  6. [warn] src/rules/slop.rs — 42 reasons: duplicate-code, maintainability-index
  7. [warn] src/rules/complexity.rs — 36 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index, panic-in-lib, restating-comment
  8. [warn] src/rules/slop_structural_deep.rs — 31 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index
  9. [warn] src/rules/duplication.rs — 29 reasons: complexity-inflation, duplicate-code, maintainability-index, panic-in-lib, suppression-debt
  10. [warn] src/rules/slopsquat.rs — 27 reasons: complexity-inflation, duplicate-code, maintainability-index, swallowed-result
  11. [warn] src/rules/boundaries.rs — 25 reasons: complexity-inflation, duplicate-code, maintainability-index
  12. [warn] src/main.rs — 23 reasons: complexity-inflation, duplicate-code, maintainability-index
  13. [warn] src/rules/dep_graph.rs — 23 reasons: complexity-inflation, duplicate-code, maintainability-index, silent-default
  14. [warn] src/commands/workspace_commands.rs — 21 reasons: complexity-inflation, duplicate-code, maintainability-index
  15. [warn] src/rules/module_graph.rs — 21 reasons: complexity-inflation, duplicate-code, maintainability-index, silent-default
  16. [warn] src/commands/deep_commands.rs — 20 reasons: complexity-inflation, duplicate-code, maintainability-index
  17. [warn] src/rules/api_surface.rs — 19 reasons: duplicate-code, maintainability-index
  18. [warn] src/rules/api_surface_deep.rs — 19 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index
  19. [warn] src/rules/slop_structural.rs — 19 reasons: complexity-inflation, duplicate-code, maintainability-index, panic-in-lib
  20. [warn] src/finding.rs — 17 reasons: complexity-inflation, duplicate-code, maintainability-index, panic-in-lib
  21. [warn] src/reachability.rs — 17 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index
  22. [warn] src/deep.rs — 16 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index
  23. [warn] src/rules/dead_trait_impl.rs — 16 reasons: complexity-inflation, duplicate-code, maintainability-index
  24. [warn] src/rules/feature_matrix.rs — 15 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index, panic-in-lib
  25. [warn] src/rules/security.rs — 15 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index
  26. [warn] src/rules/boundaries_deep.rs — 14 reasons: complexity-inflation, duplicate-code, maintainability-index, panic-in-lib
  27. [warn] src/advisory/advisories.rs — 12 reasons: complexity-inflation, duplicate-code, maintainability-index, silent-default
  28. [warn] src/advisory/mutants.rs — 10 reasons: complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index
  29. [warn] src/commands/combined_analysis.rs — 10 reasons: complexity-inflation, duplicate-code, maintainability-index
  30. [warn] src/advisory/coverage.rs — 9 reasons: complexity-inflation, duplicate-code, maintainability-index, panic-in-lib
  31. [warn] src/functions.rs — 9 reasons: complexity-inflation, duplicate-code, maintainability-index, suppression-debt
  32. [warn] src/rules/slop_text.rs — 9 reasons: complexity-inflation, duplicate-code, maintainability-index
  33. [warn] src/commands/combined.rs — 8 reasons: complexity-inflation, duplicate-code, suppression-debt
  34. [warn] src/ingest.rs — 8 reasons: complexity-inflation, duplicate-code, maintainability-index
  35. [warn] src/commands/advisory_commands.rs — 7 reasons: duplicate-code, maintainability-index
  36. [warn] src/commands/health_command.rs — 6 reasons: complexity-inflation, duplicate-code
  37. [warn] src/baseline.rs — 5 reasons: complexity-inflation, duplicate-code, maintainability-index
  38. [warn] src/refactor_map.rs — 5 reasons: complexity-inflation, duplicate-code, silent-default
  39. [warn] src/advisory/clippy_import.rs — 4 reasons: duplicate-code, integer-cast-risk
  40. [warn] src/commands/baseline_output.rs — 4 reasons: duplicate-code, maintainability-index
  41. [warn] src/health_score.rs — 3 reasons: complexity-inflation, duplicate-code, maintainability-index
  42. [warn] src/sarif.rs — 3 reasons: complexity-inflation, panic-in-lib
  43. [warn] src/impact.rs — 2 reasons: complexity-inflation
  44. [warn] src/markdown.rs — 2 reasons: complexity-inflation, duplicate-code
  45. [warn] src/pattern_baseline.rs — 2 reasons: duplicate-code
  46. [warn] src/report.rs — 2 reasons: complexity-inflation, maintainability-index
  47. [warn] src/suppression.rs — 2 reasons: maintainability-index, panic-in-lib
  48. [warn] src/commands/cli.rs — 1 reasons: complexity-inflation
  49. [warn] src/rule_registry.rs — 1 reasons: complexity-inflation
  50. [warn] src/test_util.rs — 1 reasons: panic-in-lib
next actions:
  1. Inspect src/rules/principle.rs: 123 findings across [abstraction-inflation, complexity-inflation, duplicate-code, maintainability-index], highest severity warn
  2. Inspect src/commands/analysis_commands.rs: 80 findings across [complexity-inflation, duplicate-code, maintainability-index, silent-default], highest severity warn
  3. Inspect src/rules/dead_code.rs: 74 findings across [complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index, silent-default, suppression-debt], highest severity warn
  4. Inspect src/rules/pattern.rs: 72 findings across [complexity-inflation, duplicate-code, maintainability-index], highest severity warn
  5. Inspect src/rules/deps.rs: 65 findings across [complexity-inflation, duplicate-code, maintainability-index, silent-default], highest severity warn
  6. Inspect src/rules/slop.rs: 42 findings across [duplicate-code, maintainability-index], highest severity warn
  7. Inspect src/rules/complexity.rs: 36 findings across [complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index, panic-in-lib, restating-comment], highest severity warn
  8. Inspect src/rules/slop_structural_deep.rs: 31 findings across [complexity-inflation, duplicate-code, integer-cast-risk, maintainability-index], highest severity warn
  9. Inspect src/rules/duplication.rs: 29 findings across [complexity-inflation, duplicate-code, maintainability-index, panic-in-lib, suppression-debt], highest severity warn
  10. Inspect src/rules/slopsquat.rs: 27 findings across [complexity-inflation, duplicate-code, maintainability-index, swallowed-result], highest severity warn
  • refactor
  • ranking

Clone families

examples/dupes.txtDetail: Clone families →
cargo judge dupes
mode: mild
min tokens: 20
clone families: 305
refactoring summary: 305 clone families, 635 members (repeated tokens, not an automatic merge recommendation)
  #1  5 members × 27 tokens = 135 repeated tokens across 1 files  build_functional_core_imperative_shell_heuristic, build_law_of_demeter_heuristic, build_bounded_resources_loop_heuristic
  #2  4 members × 20 tokens = 80 repeated tokens across 2 files  run_dupes, run_deps, run_coverage
  #3  3 members × 95 tokens = 285 repeated tokens across 3 files  attrs_have_cfg_test, attrs_have_cfg_test, attrs_have_cfg_test
  #4  3 members × 58 tokens = 174 repeated tokens across 1 files  run_dupes, run_deps, run_coverage
  #5  3 members × 41 tokens = 123 repeated tokens across 2 files  evaluate_module_boundary_rule, unlinked_file_findings, orphan_module_findings

family #1 — 5 members
    27 tokens  src/rules/principle.rs:550-554  build_functional_core_imperative_shell_heuristic
    27 tokens  src/rules/principle.rs:1772-1776  build_law_of_demeter_heuristic
    27 tokens  src/rules/principle.rs:1957-1961  build_bounded_resources_loop_heuristic
    27 tokens  src/rules/principle.rs:2226-2230  build_bounded_resources_recursion_heuristic
    27 tokens  src/rules/principle.rs:2753-2757  build_parse_dont_validate_heuristic

family #2 — 4 members
    20 tokens  src/commands/analysis_commands.rs:174-177  run_dupes
    20 tokens  src/commands/analysis_commands.rs:650-653  run_deps
    20 tokens  src/commands/analysis_commands.rs:749-752  run_coverage
    20 tokens  src/commands/health_command.rs:159-162  run

family #3 — 3 members
    95 tokens  src/rules/api_surface.rs:516-529  attrs_have_cfg_test
    95 tokens  src/rules/dead_trait_impl.rs:133-146  attrs_have_cfg_test
    95 tokens  src/rules/deps.rs:1571-1584  attrs_have_cfg_test

family #4 — 3 members
    58 tokens  src/commands/analysis_commands.rs:155-164  run_dupes
    58 tokens  src/commands/analysis_commands.rs:628-637  run_deps
    58 tokens  src/commands/analysis_commands.rs:732-741  run_coverage

family #5 — 3 members
    41 tokens  src/rules/boundaries.rs:1258-1261  evaluate_module_boundary_rule
    41 tokens  src/rules/module_graph.rs:482-485  unlinked_file_findings
    41 tokens  src/rules/module_graph.rs:670-673  orphan_module_findings

family #6 — 3 members
    39 tokens  src/rules/dead_code.rs:1771-1778  coupling_finding
    39 tokens  src/rules/dead_trait_impl.rs:306-313  finding_for
    39 tokens  src/rules/duplication.rs:187-199  CloneMember::to_finding

family #7 — 3 members
    39 tokens  src/rules/deps.rs:300-304  DepsError::source
    39 tokens  src/rules/duplication.rs:272-276  DuplicationError::source
    39 tokens  src/rules/module_graph.rs:123-127  ModuleGraphError::source

family #8 — 3 members
    32 tokens  src/rules/pattern.rs:1042-1047  Finder::visit_macro
    32 tokens  src/rules/principle.rs:1894-1899  Finder::visit_macro
    32 tokens  src/rules/principle.rs:2431-2436  ReturnOrPanicFinder::visit_macro

family #9 — 3 members
    31 tokens  src/rules/slopsquat.rs:561-565  SparseIndexClient::lookup
    31 tokens  src/rules/slopsquat.rs:620-624  RestMetadataClient::metadata
    31 tokens  src/rules/slopsquat.rs:677-681  RestOwnersClient::owners

family #10 — 3 members
    30 tokens  src/rules/pattern.rs:997-1008  expr_references_ident
    30 tokens  src/rules/principle.rs:2046-2060  expr_references_any
    30 tokens  src/rules/principle.rs:2139-2163  has_parameter_guard_before

family #11 — 3 members
    28 tokens  src/commands/analysis_commands.rs:121-126  run_dupes
    28 tokens  src/commands/analysis_commands.rs:679-684  run_coverage
    28 tokens  src/commands/analysis_commands.rs:1019-1024  run_module_graph

family #12 — 3 members
    24 tokens  src/rules/api_surface.rs:504-508  has_non_exhaustive
    24 tokens  src/rules/pattern.rs:1509-1513  has_non_exhaustive_attr
    24 tokens  src/rules/principle.rs:2840-2844  struct_has_non_exhaustive

family #13 — 3 members
    24 tokens  src/rules/dead_code.rs:1408-1419  check_pub_site
    24 tokens  src/rules/dead_code.rs:1476-1487  scan_file_for_dead_code
    24 tokens  src/rules/dead_code.rs:1526-1537  scan_file_for_dead_code

family #14 — 3 members
    24 tokens  src/rules/security.rs:1047-1049  SecretVisitor::visit_item_fn
    24 tokens  src/rules/security.rs:1053-1055  SecretVisitor::visit_impl_item_fn
    24 tokens  src/rules/security.rs:1059-1061  SecretVisitor::visit_trait_item_fn

family #15 — 3 members
    23 tokens  src/rules/dead_code.rs:770-772  referencing_files_or_bail
    23 tokens  src/rules/feature_matrix.rs:181-183  analyze_workspace
    23 tokens  src/rules/feature_matrix.rs:206-208  analyze_workspace

... and 290 more families (see --format json for the full list)
  • dupes
  • duplication

Baseline compare

examples/compare.txtDetail: Baseline compare →
cargo judge compare .judge/baseline.json
verdict: fail
unchanged: 934
resolved: 45
  silent-default  src/rules/dead_code.rs
  silent-default  src/rules/dead_code.rs
  silent-default  src/rules/deps.rs
  silent-default  src/rules/deps.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/workspace_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/health_command.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/advisory/coverage.rs
  duplicate-code  src/rules/deps.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/commands/analysis_commands.rs
  duplicate-code  src/rules/deps.rs
  duplicate-code  src/rules/deps.rs
  duplicate-code  src/commands/analysis_commands.rs
  integer-cast-risk  src/rules/dead_code.rs
  integer-cast-risk  src/rules/dead_code.rs
  suppression-debt  src/rules/dead_code.rs
introduced: 56
  duplicate-code  src/commands/analysis_commands.rs:650
  duplicate-code  src/commands/analysis_commands.rs:628
  duplicate-code  src/commands/analysis_commands.rs:1019
  duplicate-code  src/rules/dead_code.rs:1408
  duplicate-code  src/rules/dead_code.rs:1476
  duplicate-code  src/rules/dead_code.rs:1526
  duplicate-code  src/commands/analysis_commands.rs:643
  duplicate-code  src/commands/analysis_commands.rs:653
  duplicate-code  src/commands/advisory_commands.rs:11
  duplicate-code  src/commands/analysis_commands.rs:457
  duplicate-code  src/commands/analysis_commands.rs:1367
  duplicate-code  src/rules/deps.rs:358
  duplicate-code  src/rules/deps.rs:492
  duplicate-code  src/rules/deps.rs:623
  duplicate-code  src/rules/deps.rs:1645
  duplicate-code  src/commands/analysis_commands.rs:1274
  duplicate-code  src/commands/analysis_commands.rs:1419
  duplicate-code  src/rules/deps.rs:656
  duplicate-code  src/rules/deps.rs:1132
  duplicate-code  src/commands/workspace_commands.rs:363
  duplicate-code  src/commands/analysis_commands.rs:1482
  duplicate-code  src/commands/analysis_commands.rs:1370
  duplicate-code  src/rules/deps.rs:691
  duplicate-code  src/rules/deps.rs:1147
  duplicate-code  src/commands/analysis_commands.rs:1380
  duplicate-code  src/commands/analysis_commands.rs:1379
  duplicate-code  src/rules/deps.rs:607
  duplicate-code  src/rules/deps.rs:1629
  duplicate-code  src/commands/analysis_commands.rs:581
  duplicate-code  src/commands/analysis_commands.rs:1276
  duplicate-code  src/commands/analysis_commands.rs:1375
  duplicate-code  src/commands/analysis_commands.rs:1441
  duplicate-code  src/rules/deps.rs:541
  duplicate-code  src/rules/deps.rs:1507
  duplicate-code  src/commands/analysis_commands.rs:1279
  duplicate-code  src/rules/deps.rs:603
  duplicate-code  src/rules/deps.rs:1625
  duplicate-code  src/rules/deps.rs:645
  duplicate-code  src/rules/deps.rs:1119
  duplicate-code  src/commands/analysis_commands.rs:583
  duplicate-code  src/commands/analysis_commands.rs:1420
  duplicate-code  src/commands/analysis_commands.rs:622
  duplicate-code  src/rules/deps.rs:484
  duplicate-code  src/rules/slopsquat.rs:145
  duplicate-code  src/commands/analysis_commands.rs:459
  duplicate-code  src/commands/analysis_commands.rs:574
  duplicate-code  src/commands/analysis_commands.rs:1285
  duplicate-code  src/commands/analysis_commands.rs:1421
  duplicate-code  src/rules/deps.rs:664
  duplicate-code  src/rules/deps.rs:1140
  duplicate-code  src/commands/analysis_commands.rs:899
  duplicate-code  src/commands/analysis_commands.rs:1290
  duplicate-code  src/commands/analysis_commands.rs:1486
  duplicate-code  src/commands/analysis_commands.rs:1421
  suppression-debt  src/rules/dead_code.rs:1375
  suppression-debt  src/rules/dead_code.rs:1439
introduced advisory (heuristic — no verdict effect): 14
  complexity-inflation  src/commands/analysis_commands.rs:483
  complexity-inflation  src/commands/analysis_commands.rs:1259
  complexity-inflation  src/commands/analysis_commands.rs:1405
  complexity-inflation  src/main.rs:3316
  complexity-inflation  src/rules/dead_code.rs:1370
  complexity-inflation  src/rules/deps.rs:527
  complexity-inflation  src/rules/deps.rs:631
  silent-default  src/commands/analysis_commands.rs:506
  silent-default  src/rules/dead_code.rs:1741
  silent-default  src/rules/dead_code.rs:1744
  silent-default  src/rules/deps.rs:1282
  silent-default  src/rules/deps.rs:1353
  integer-cast-risk  src/rules/dead_code.rs:1566
  integer-cast-risk  src/rules/dead_code.rs:2516
severity changed: 0
  • baseline
  • ci
  • verdict

Health score

examples/health.txtDetail: Health score →
cargo judge health --score
functions analyzed: 2092

top complexity (cyclomatic):
   41  src/commands/health_command.rs:5  run
   29  src/commands/cli.rs:150  Command::run
   29  src/rules/complexity.rs:731  binop_label
   27  src/commands/cli.rs:115  Command::json_artifact
   25  src/commands/deep_commands.rs:34  run_dead_code_deep
   25  src/rules/deps.rs:324  analyze_workspace
   24  src/commands/analysis_commands.rs:909  run_boundaries
   23  src/commands/analysis_commands.rs:483  print_deps_why_tty
   23  src/commands/workspace_commands.rs:60  run_structure
   22  src/commands/analysis_commands.rs:560  run_deps
   21  src/rules/api_surface_deep.rs:330  find_named_top_level_item
   20  src/commands/analysis_commands.rs:672  run_coverage
   20  src/commands/analysis_commands.rs:1300  run_api_surface
   20  src/commands/combined_analysis.rs:35  collect_findings_with_progress
   20  src/commands/workspace_commands.rs:372  run_inspect

slop signals: 36 (324 advisory)
  swallowed-result: 2
  suppression-debt: 11
  restating-comment: 1
  complexity-inflation: 243
  maintainability-index: 39
  abstraction-inflation: 3
  integer-cast-risk: 39
  panic-in-lib: 22

  [info] suppression-debt src/commands/combined.rs:178  clippy::too_many_arguments
  [info] suppression-debt src/functions.rs:158  clippy::too_many_arguments
  [info] restating-comment src/rules/complexity.rs:1457  tests::maintainability_index_matches_hand_calculation
  [info] suppression-debt src/rules/dead_code.rs:784  clippy::too_many_arguments
  [info] suppression-debt src/rules/dead_code.rs:868  clippy::too_many_arguments
  [info] suppression-debt src/rules/dead_code.rs:974  clippy::too_many_arguments
  [info] suppression-debt src/rules/dead_code.rs:1067  clippy::too_many_arguments
  [info] suppression-debt src/rules/dead_code.rs:1163  clippy::too_many_arguments
  [info] suppression-debt src/rules/dead_code.rs:1245  clippy::too_many_arguments
  [info] suppression-debt src/rules/dead_code.rs:1375  clippy::too_many_arguments
  [info] suppression-debt src/rules/dead_code.rs:1439  clippy::too_many_arguments
  [info] suppression-debt src/rules/duplication.rs:1030  clippy::too_many_arguments
  [warn] swallowed-result src/rules/slopsquat.rs:356  write_cache
  [warn] swallowed-result src/rules/slopsquat.rs:359  write_cache
  [warn] panic-in-lib src/advisory/coverage.rs:336  untested_hotspots
  [warn] panic-in-lib src/finding.rs:422  Finding::at_span
  [warn] panic-in-lib src/finding.rs:889  FindingGraph::add_edge
  [warn] panic-in-lib src/finding.rs:924  FindingGraph::roots
  [warn] panic-in-lib src/finding.rs:942  FindingGraph::causes_of
  [warn] panic-in-lib src/finding.rs:955  FindingGraph::caused_by_of
  [warn] panic-in-lib src/finding.rs:973  FindingGraph::into_findings
  [warn] panic-in-lib src/finding.rs:974  FindingGraph::into_findings
  [warn] panic-in-lib src/finding.rs:975  FindingGraph::into_findings
  [warn] panic-in-lib src/finding.rs:976  FindingGraph::into_findings
  [warn] panic-in-lib src/rules/boundaries_deep.rs:178  analyze_workspace
  [warn] panic-in-lib src/rules/complexity.rs:582  signature_complexity
  [warn] panic-in-lib src/rules/complexity.rs:909  maintainability_index
  [warn] panic-in-lib src/rules/duplication.rs:160  CloneMember::to_finding
  [warn] panic-in-lib src/rules/duplication.rs:163  CloneMember::to_finding
  [warn] panic-in-lib src/rules/duplication.rs:183  CloneMember::to_finding
  [warn] panic-in-lib src/rules/feature_matrix.rs:222  analyze_workspace
  [warn] panic-in-lib src/rules/feature_matrix.rs:236  analyze_workspace
  [warn] panic-in-lib src/rules/slop_structural.rs:182  complexity_inflation
  [warn] panic-in-lib src/sarif.rs:88  render
  [warn] panic-in-lib src/suppression.rs:133  apply_inline_suppressions
  [warn] panic-in-lib src/test_util.rs:19  TempDir::new

advisory (heuristic) — no verdict effect: 324
  [warn] complexity-inflation src/commands/health_command.rs:5  run
  [warn] complexity-inflation src/commands/cli.rs:150  Command::run
  [warn] complexity-inflation src/commands/deep_commands.rs:34  run_dead_code_deep
  [warn] complexity-inflation src/rules/deps.rs:324  analyze_workspace
  [warn] complexity-inflation src/commands/analysis_commands.rs:909  run_boundaries
  [warn] complexity-inflation src/commands/analysis_commands.rs:483  print_deps_why_tty
  [warn] complexity-inflation src/commands/workspace_commands.rs:60  run_structure
  [warn] complexity-inflation src/commands/analysis_commands.rs:560  run_deps
  [warn] complexity-inflation src/commands/analysis_commands.rs:672  run_coverage
  [warn] complexity-inflation src/commands/analysis_commands.rs:1300  run_api_surface
  [warn] complexity-inflation src/rules/complexity.rs:376  CognitiveComplexityVisitor::visit_expr
  [warn] complexity-inflation src/commands/analysis_commands.rs:111  run_dupes
  [warn] complexity-inflation src/rules/duplication.rs:1058  find_clone_families
  [warn] complexity-inflation src/commands/combined.rs:77  run
  [warn] complexity-inflation src/reachability.rs:497  why_live
  [warn] complexity-inflation src/rules/boundaries_deep.rs:86  analyze_workspace
  [warn] complexity-inflation src/rules/deps.rs:1177  analyze_rustc_unused_dependencies
  [warn] complexity-inflation src/commands/deep_commands.rs:316  run_explain_deep
  [warn] complexity-inflation src/rules/dead_trait_impl.rs:315  analyze_workspace
  [warn] complexity-inflation src/rules/duplication.rs:781  assign_semantic_text
  [warn] complexity-inflation src/rules/feature_matrix.rs:148  analyze_workspace
  [warn] complexity-inflation src/rules/module_graph.rs:434  unlinked_file_findings
  [warn] complexity-inflation src/rules/slop_structural.rs:495  analyze_workspace_structural
  [warn] complexity-inflation src/rules/module_graph.rs:651  orphan_module_findings
  [warn] complexity-inflation src/rules/slop_text.rs:80  extract_comments
  [warn] complexity-inflation src/advisory/coverage.rs:155  parse_lcov
  [warn] complexity-inflation src/rules/boundaries.rs:895  evaluate_rule
  [warn] complexity-inflation src/rules/duplication.rs:585  flatten_tokens
  [warn] complexity-inflation src/commands/analysis_commands.rs:1009  run_module_graph
  [warn] complexity-inflation src/rules/api_surface_deep.rs:791  analyze_workspace
  [warn] complexity-inflation src/rules/dead_code.rs:1574  analyze_workspace
  [warn] complexity-inflation src/finding.rs:738  relativize_paths
  [warn] complexity-inflation src/ingest.rs:237  load
  [warn] complexity-inflation src/reachability.rs:134  classify_call_kind
  [warn] complexity-inflation src/rules/duplication.rs:927  build_fingerprints
  [warn] complexity-inflation src/rules/dep_graph.rs:364  workspace_dep_drift
  [warn] complexity-inflation src/advisory/coverage.rs:266  untested_hotspots
  [warn] complexity-inflation src/rules/dep_graph.rs:206  duplicate_crate_versions
  [warn] complexity-inflation src/rules/security.rs:633  unsafe_density_finding_for_file
  [warn] complexity-inflation src/rules/complexity.rs:885  maintainability_index
  [warn] complexity-inflation src/rules/dead_code.rs:1435  scan_file_for_dead_code
  [warn] complexity-inflation src/rules/slop_structural.rs:154  complexity_inflation
  [warn] complexity-inflation src/rules/dead_code.rs:1054  check_enum_variant
  [warn] complexity-inflation src/rules/dead_code.rs:1148  check_test_only_pub
  [warn] complexity-inflation src/rules/duplication.rs:141  CloneMember::to_finding
  [warn] complexity-inflation src/rules/principle.rs:4104  tests::generated_wording_never_claims_a_violation
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:389  monomorphization_load_findings
  [warn] complexity-inflation src/commands/analysis_commands.rs:1259  apply_deep_api_surface_checks
  [warn] complexity-inflation src/main.rs:2945  tests::heuristic_only_findings_pass_the_verdict_and_score_without_deductions
  [warn] complexity-inflation src/markdown.rs:20  push_delta_body
  [warn] complexity-inflation src/reachability.rs:407  deterministic_callers
  [warn] complexity-inflation src/rules/complexity.rs:118  analyze_file
  [warn] complexity-inflation src/rules/complexity.rs:556  signature_complexity
  [warn] complexity-inflation src/rules/dead_code.rs:437  file_constructs_variant
  [warn] complexity-inflation src/rules/dead_code.rs:967  push_finding_if_unreachable
  [warn] complexity-inflation src/rules/dead_code.rs:1812  module_coupling_findings
  [warn] complexity-inflation src/rules/dead_code.rs:2199  tests::structs_enums_traits_and_consts_are_checked_the_same_way_as_functions
  [warn] complexity-inflation src/rules/dead_code.rs:2261  tests::associated_consts_types_and_statics_are_checked_the_same_way_as_functions
  [warn] complexity-inflation src/rules/dep_graph.rs:308  msrv_drift
  [warn] complexity-inflation src/rules/dep_graph.rs:514  tests::add_synthetic_duplicate
  [warn] complexity-inflation src/rules/deps.rs:527  collect_usage_sites
  [warn] complexity-inflation src/rules/deps.rs:631  resolve_graph_paths
  [warn] complexity-inflation src/rules/deps.rs:1940  tests::write_fixture_with_dep_line
  [warn] complexity-inflation src/rules/principle.rs:360  for_each_parsed_file
  [warn] complexity-inflation src/rules/principle.rs:1427  cohesion_candidates
  [warn] complexity-inflation src/rules/principle.rs:3582  make_illegal_states_unrepresentable_candidates
  [warn] complexity-inflation src/rules/slop_structural.rs:437  for_each_authored_file
  [warn] complexity-inflation src/rules/slop_structural.rs:945  tests::complexity_inflation_counts_both_arms_of_a_cfg_gated_function
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:302  duplicative_reinvention_findings
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:481  analyze_workspace
  [warn] complexity-inflation src/advisory/advisories.rs:330  known_vulnerability_finding
  [warn] complexity-inflation src/advisory/coverage.rs:693  tests::untested_hotspot_fires_when_complexity_churn_and_uncovered_lines_all_coincide
  [warn] complexity-inflation src/commands/analysis_commands.rs:266  apply_crates_io_checks
  [warn] complexity-inflation src/commands/combined.rs:174  build_report
  [warn] complexity-inflation src/deep.rs:542  tests::a_position_not_on_a_symbol_is_an_unresolved_error_not_zero_references
  [warn] complexity-inflation src/impact.rs:76  analyze
  [warn] complexity-inflation src/main.rs:2830  tests::baseline_diff_classifies_a_new_files_duplication_as_introduced
  [warn] complexity-inflation src/main.rs:3316  tests::refactor_json_next_actions_mirrors_the_ranked_candidates
  [warn] complexity-inflation src/rule_registry.rs:1368  tests::every_fast_tier_rule_id_has_a_registry_entry
  [warn] complexity-inflation src/rules/boundaries.rs:1319  find_cycles
  [warn] complexity-inflation src/rules/complexity.rs:1331  tests::signature_complexity_fires_for_each_trigger_independently
  [warn] complexity-inflation src/rules/dead_code.rs:300  walk_type_items
  [warn] complexity-inflation src/rules/dead_code.rs:849  check_item
  [warn] complexity-inflation src/rules/dead_code.rs:2773  tests::a_pub_fn_reachable_only_through_a_non_default_cargo_feature_is_not_flagged_dead
  [warn] complexity-inflation src/rules/dead_code.rs:3770  tests::module_coupling_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/deps.rs:752  manifest_explicitly_enables_default_features
  [warn] complexity-inflation src/rules/deps.rs:2908  tests::heavy_dependency_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/principle.rs:1709  site_level_candidates
  [warn] complexity-inflation src/rules/principle.rs:1767  build_law_of_demeter_heuristic
  [warn] complexity-inflation src/rules/principle.rs:2221  build_bounded_resources_recursion_heuristic
  [warn] complexity-inflation src/rules/principle.rs:2623  parse_dont_validate_candidates
  [warn] complexity-inflation src/rules/principle.rs:2958  collect_crate_wide_pair
  [warn] complexity-inflation src/rules/slop_structural.rs:772  fragile_substring_classification
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:1458  tests::monomorphization_load_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/slopsquat.rs:1608  tests::phantom_crate_cannot_distinguish_a_permanently_nonexistent_name_from_one_registered_a_moment_after_the_snapshot
  [warn] complexity-inflation src/rules/slopsquat.rs:1985  tests::yanked_dependency_cannot_distinguish_a_permanent_yank_from_one_reverted_a_moment_after_the_snapshot
  [warn] complexity-inflation src/sarif.rs:31  render
  [warn] complexity-inflation src/advisory/advisories.rs:540  tests::known_vulnerability_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/advisory/coverage.rs:794  tests::untested_hotspot_misses_a_real_hotspot_when_cfg_gated_lines_inflate_the_span
  [warn] complexity-inflation src/advisory/mutants.rs:207  tests::parses_a_realistic_multi_outcome_report_and_only_flags_missed_mutants
  [warn] complexity-inflation src/advisory/mutants.rs:308  tests::a_missed_mutant_with_no_function_still_produces_a_finding
  [warn] complexity-inflation src/advisory/mutants.rs:364  tests::an_entry_missing_a_required_field_is_skipped_not_fatal
  [warn] complexity-inflation src/baseline.rs:605  tests::v1_baseline_with_confidence_migrates_to_evidence_classes
  [warn] complexity-inflation src/commands/analysis_commands.rs:1405  save_or_compare_api_surface_baseline
  [warn] complexity-inflation src/commands/combined_analysis.rs:129  deps_rule_revisions
  [warn] complexity-inflation src/commands/combined_analysis.rs:185  slop_structural_security_rule_revisions
  [warn] complexity-inflation src/deep.rs:98  DeepContext::load
  [warn] complexity-inflation src/deep.rs:319  tests::reference_count_distinguishes_used_from_dead_pub_items
  [warn] complexity-inflation src/deep.rs:435  tests::reference_count_distinguishes_used_from_dead_pub_items_for_methods_too
  [warn] complexity-inflation src/deep.rs:613  tests::reference_count_sees_a_call_originating_inside_cfg_test_code
  [warn] complexity-inflation src/finding.rs:1116  tests::graph_export_serializes_identically_to_the_v2_finding_shape
  [warn] complexity-inflation src/finding.rs:1339  tests::deep_universe_is_fully_populated_and_reflects_include_tests
  [warn] complexity-inflation src/functions.rs:335  tests::qualifies_names_across_mod_impl_and_trait
  [warn] complexity-inflation src/health_score.rs:797  tests::a_crate_named_in_two_profiles_silently_keeps_only_the_first_multiplier
  [warn] complexity-inflation src/impact.rs:123  direct_analysis
  [warn] complexity-inflation src/ingest.rs:373  tests::load_discovers_crate_source_files_and_entry_points
  [warn] complexity-inflation src/ingest.rs:416  tests::a_nested_path_dependency_is_not_attributed_to_the_root_crate
  [warn] complexity-inflation src/ingest.rs:466  tests::a_workspace_member_nested_inside_another_member_owns_its_own_files
  [warn] complexity-inflation src/main.rs:1376  tests::api_surface_baseline_shows_a_size_delta
  [warn] complexity-inflation src/main.rs:1431  tests::api_surface_baseline_without_size_field_is_not_comparable
  [warn] complexity-inflation src/main.rs:1502  tests::write_multi_rule_pattern_candidate_fixture_crate
  [warn] complexity-inflation src/main.rs:1732  tests::compare_works_from_an_artifact_in_a_workspace_without_git
  [warn] complexity-inflation src/main.rs:1820  tests::combined_tty_defaults_to_a_grouped_summary_and_keeps_details_available
  [warn] complexity-inflation src/main.rs:2014  tests::judge_ignore_suppresses_a_finding_so_it_does_not_fail_the_verdict
  [warn] complexity-inflation src/main.rs:2337  tests::patterns_command_reports_candidates_from_multiple_rules_and_stays_clean
  [warn] complexity-inflation src/main.rs:2383  tests::pattern_baseline_flags_save_and_diff_candidates
  [warn] complexity-inflation src/main.rs:2530  tests::explain_principle_known_id_matches_principles_output
  [warn] complexity-inflation src/main.rs:2646  tests::explain_rule_with_a_curated_example_renders_it_in_tty_and_json
  [warn] complexity-inflation src/main.rs:2723  tests::fix_preview_lists_migration_steps_without_a_patch
  [warn] complexity-inflation src/main.rs:2887  tests::artifact_comparison_keeps_an_identical_finding_unchanged
  [warn] complexity-inflation src/main.rs:3077  tests::refactoring_commands_keep_their_cli_contracts
  [warn] complexity-inflation src/main.rs:3129  tests::json_artifacts_use_a_command_default_or_an_explicit_output_path
  [warn] complexity-inflation src/main.rs:3187  tests::markdown_review_reports_use_a_default_or_explicit_judge_artifact_path
  [warn] complexity-inflation src/main.rs:3418  tests::combined_progress_is_separate_versioned_jsonl_and_subcommands_reject_it
  [warn] complexity-inflation src/reachability.rs:653  tests::finds_a_path_from_main_through_an_intermediate_call
  [warn] complexity-inflation src/reachability.rs:784  tests::an_unsafe_wrapped_export_attribute_is_an_entry_point_regardless_of_include_tests
  [warn] complexity-inflation src/reachability.rs:836  tests::a_call_through_a_dyn_trait_object_is_classified_as_dynamic
  [warn] complexity-inflation src/reachability.rs:924  tests::a_call_in_a_generated_file_is_classified_as_generated
  [warn] complexity-inflation src/refactor_map.rs:252  tests::separates_test_context_from_production_ranking
  [warn] complexity-inflation src/report.rs:509  tests::markdown_renders_an_executive_summary_grouped_findings_and_next_steps
  [warn] complexity-inflation src/rules/api_surface_deep.rs:667  leak_type_finding
  [warn] complexity-inflation src/rules/api_surface_deep.rs:928  tests::a_pub_fn_with_a_dependency_type_parameter_is_flagged
  [warn] complexity-inflation src/rules/api_surface_deep.rs:979  tests::a_pub_fn_leaking_a_configured_internal_crate_type_is_flagged
  [warn] complexity-inflation src/rules/api_surface_deep.rs:1265  tests::a_two_hop_reexport_chain_is_flagged
  [warn] complexity-inflation src/rules/api_surface_deep.rs:1309  tests::a_chain_deeper_than_the_cap_is_reported_as_capped
  [warn] complexity-inflation src/rules/api_surface_deep.rs:1374  tests::a_pub_use_cycle_does_not_panic_or_hang
  [warn] complexity-inflation src/rules/boundaries.rs:2120  tests::layered_preset_flags_inner_layer_reaching_outer_layer
  [warn] complexity-inflation src/rules/boundaries.rs:2190  tests::feature_sliced_preset_flags_cross_group_reference_but_allows_shared
  [warn] complexity-inflation src/rules/boundaries.rs:2235  tests::hexagonal_preset_flags_core_reaching_adapters
  [warn] complexity-inflation src/rules/boundaries.rs:2276  tests::hexagonal_preset_cannot_express_a_crate_that_legitimately_holds_two_roles_at_once
  [warn] complexity-inflation src/rules/boundaries.rs:2396  tests::handwritten_boundary_rule_and_layers_preset_both_fire
  [warn] complexity-inflation src/rules/boundaries.rs:2458  tests::module_boundary_flags_a_forbidden_qualified_path_reference
  [warn] complexity-inflation src/rules/boundaries.rs:2582  tests::module_boundary_does_not_flag_a_self_qualified_path_reference
  [warn] complexity-inflation src/rules/boundaries.rs:2630  tests::module_boundary_misses_a_violation_in_a_file_relocated_via_path_attribute
  [warn] complexity-inflation src/rules/boundaries.rs:2756  tests::module_boundary_matches_nested_modules_under_from_by_prefix
  [warn] complexity-inflation src/rules/boundaries_deep.rs:255  tests::catches_a_reference_through_a_re_export_the_text_scan_would_miss
  [warn] complexity-inflation src/rules/complexity.rs:955  tests::cyclomatic_complexity_counts_branches
  [warn] complexity-inflation src/rules/complexity.rs:1084  tests::cognitive_complexity_matches_hand_calculation
  [warn] complexity-inflation src/rules/complexity.rs:1140  tests::expression_width_and_async_nesting_match_hand_calculation
  [warn] complexity-inflation src/rules/complexity.rs:1419  tests::maintainability_index_matches_hand_calculation
  [warn] complexity-inflation src/rules/dead_code.rs:535  load_workspace_metadata
  [warn] complexity-inflation src/rules/dead_code.rs:1239  check_unreachable_from_entry
  [warn] complexity-inflation src/rules/dead_code.rs:1370  check_pub_site
  [warn] complexity-inflation src/rules/dead_code.rs:1935  tests::a_pub_fn_called_from_another_workspace_crate_is_not_flagged
  [warn] complexity-inflation src/rules/dead_code.rs:2010  tests::a_private_fn_called_from_main_is_not_flagged_unreachable_from_entry
  [warn] complexity-inflation src/rules/dead_code.rs:2153  tests::finding_shape_matches_the_documented_contract
  [warn] complexity-inflation src/rules/dead_code.rs:2336  tests::a_single_crate_workspace_does_not_flag_items_reachable_from_its_own_main
  [warn] complexity-inflation src/rules/dead_code.rs:2430  tests::an_item_only_used_by_an_unsafe_wrapped_export_is_not_flagged
  [warn] complexity-inflation src/rules/dead_code.rs:2487  tests::an_unresolvable_position_is_a_collected_error_not_a_finding
  [warn] complexity-inflation src/rules/dead_code.rs:2559  tests::a_pub_fn_reachable_only_through_an_unexpanded_proc_macro_derive_is_falsely_flagged_dead
  [warn] complexity-inflation src/rules/dead_code.rs:2679  tests::a_pub_item_in_a_proc_macro_exposed_crate_discloses_the_limitation
  [warn] complexity-inflation src/rules/dead_code.rs:2971  tests::an_enum_variant_never_constructed_is_flagged_dead_enum_variant
  [warn] complexity-inflation src/rules/dead_code.rs:3077  tests::a_pub_fn_reachable_only_from_a_test_is_flagged_test_only_pub
  [warn] complexity-inflation src/rules/dead_code.rs:3140  tests::a_pub_fn_reachable_from_main_is_not_flagged_test_only_pub
  [warn] complexity-inflation src/rules/dead_code.rs:3182  tests::a_pub_fn_used_by_another_workspace_crate_is_not_flagged_test_only_pub_even_if_also_tested
  [warn] complexity-inflation src/rules/dead_code.rs:3268  tests::unused_pub_workspace_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/dead_code.rs:3367  tests::test_only_pub_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/dead_code.rs:3571  tests::crate_coupling_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/dead_trait_impl.rs:567  tests::only_the_unused_impl_of_a_multiply_implemented_trait_fires
  [warn] complexity-inflation src/rules/dep_graph.rs:851  tests::msrv_drift_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/deps.rs:2248  tests::a_dev_dependency_also_declared_as_a_normal_dependency_is_not_flagged
  [warn] complexity-inflation src/rules/deps.rs:2409  tests::a_dependency_without_a_repository_field_is_flagged_end_to_end
  [warn] complexity-inflation src/rules/deps.rs:2457  tests::a_dependency_with_a_repository_field_is_not_flagged_end_to_end
  [warn] complexity-inflation src/rules/deps.rs:2833  tests::misplaced_dependency_kind_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/deps.rs:2982  tests::unused_feature_flag_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/deps.rs:3024  tests::default_features_unused_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/deps.rs:3099  tests::dep_without_repo_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/duplication.rs:1399  tests::write_duplicate_fixtures
  [warn] complexity-inflation src/rules/duplication.rs:1478  tests::test_only_functions_are_excluded_unless_requested
  [warn] complexity-inflation src/rules/duplication.rs:1575  tests::finds_a_duplicated_span_nested_inside_a_larger_unique_function
  [warn] complexity-inflation src/rules/duplication.rs:1652  tests::contained_spans_are_deduped_to_the_maximal_match
  [warn] complexity-inflation src/rules/duplication.rs:1769  tests::judge_dupe_ignore_suppresses_only_the_immediately_following_function
  [warn] complexity-inflation src/rules/duplication.rs:1998  tests::semantic_mode_matches_renamed_clone
  [warn] complexity-inflation src/rules/duplication.rs:2161  tests::strongly_repetitive_file_terminates_in_reasonable_time
  [warn] complexity-inflation src/rules/duplication.rs:2226  tests::duplicate_behind_an_inactive_cfg_is_still_reported
  [warn] complexity-inflation src/rules/duplication.rs:2275  tests::semantic_mode_matches_different_macro_call_arguments_with_identical_shape
  [warn] complexity-inflation src/rules/duplication.rs:2367  tests::suppression_markers_inside_an_inactive_cfg_block_still_apply
  [warn] complexity-inflation src/rules/feature_matrix.rs:322  tests::item_reachable_under_a_configured_combination_does_not_fire
  [warn] complexity-inflation src/rules/feature_matrix.rs:384  tests::ungated_reachable_item_does_not_fire
  [warn] complexity-inflation src/rules/module_graph.rs:1054  tests::a_module_referenced_from_another_workspace_crate_by_crate_name_is_not_orphaned
  [warn] complexity-inflation src/rules/pattern.rs:494  build_candidate
  [warn] complexity-inflation src/rules/pattern.rs:782  build_primitive_domain_value_candidate
  [warn] complexity-inflation src/rules/pattern.rs:1204  build_boolean_state_cluster_candidate
  [warn] complexity-inflation src/rules/pattern.rs:1695  build_public_invariant_bypass_candidate
  [warn] complexity-inflation src/rules/pattern.rs:1976  build_manual_resource_lifecycle_candidate
  [warn] complexity-inflation src/rules/pattern.rs:2408  tests::boolean_cluster_with_matching_clippy_hit_gains_a_third_evidence_entry
  [warn] complexity-inflation src/rules/pattern.rs:2786  tests::manual_resource_lifecycle_unrelated_types_sharing_call_names_still_fires
  [warn] complexity-inflation src/rules/principle.rs:544  build_functional_core_imperative_shell_heuristic
  [warn] complexity-inflation src/rules/principle.rs:785  build_interface_segregation_heuristic
  [warn] complexity-inflation src/rules/principle.rs:1124  build_dependency_inversion_heuristic
  [warn] complexity-inflation src/rules/principle.rs:1469  build_cohesion_heuristic
  [warn] complexity-inflation src/rules/principle.rs:1952  build_bounded_resources_loop_heuristic
  [warn] complexity-inflation src/rules/principle.rs:2747  build_parse_dont_validate_heuristic
  [warn] complexity-inflation src/rules/principle.rs:3063  build_api_evolvability_heuristic
  [warn] complexity-inflation src/rules/principle.rs:3345  build_unsafe_containment_heuristic
  [warn] complexity-inflation src/rules/principle.rs:3698  build_misu_heuristic
  [warn] complexity-inflation src/rules/principle.rs:4055  tests::both_rules_can_report_candidates_in_the_same_workspace
  [warn] complexity-inflation src/rules/principle.rs:4688  tests::interface_segregation_signal_is_scoped_to_the_crate_that_has_it
  [warn] complexity-inflation src/rules/principle.rs:4743  tests::full_adapters_implementing_the_whole_interface_produce_no_interface_segregation_heuristic
  [warn] complexity-inflation src/rules/principle.rs:4826  tests::orchestrator_calling_infra_without_leaking_its_types_produces_no_dependency_inversion_heuristic
  [warn] complexity-inflation src/rules/principle.rs:4867  tests::cohesion_signal_is_scoped_to_the_crate_that_has_it
  [warn] complexity-inflation src/rules/principle.rs:5159  tests::parse_dont_validate_with_crate_wide_duplication_produces_one_heuristic
  [warn] complexity-inflation src/rules/principle.rs:5496  tests::misu_with_mutually_exclusive_construction_sites_produces_one_heuristic
  [warn] complexity-inflation src/rules/slop_structural.rs:1076  tests::single_impl_trait_fires_but_two_impls_do_not
  [warn] complexity-inflation src/rules/slop_structural.rs:1132  tests::single_impl_trait_excludes_known_derivable_traits
  [warn] complexity-inflation src/rules/slop_structural.rs:1249  tests::delegating_wrapper_fires_but_non_delegating_method_does_not
  [warn] complexity-inflation src/rules/slop_structural.rs:1325  tests::delegating_wrapper_generated_entirely_by_macro_produces_no_finding
  [warn] complexity-inflation src/rules/slop_structural.rs:1374  tests::builder_for_small_struct_fires_but_not_for_a_larger_target
  [warn] complexity-inflation src/rules/slop_structural.rs:1433  tests::builder_build_method_generated_entirely_by_macro_produces_no_finding
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:259  connectivity_drop_findings
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:559  tests::connectivity_drop_flags_a_function_with_no_cross_file_callers
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:607  tests::connectivity_drop_does_not_flag_a_test_function
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:652  tests::connectivity_drop_does_not_flag_a_trait_impl_method
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:726  tests::duplicative_reinvention_flags_a_family_with_no_fan_in_on_any_member
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:791  tests::duplicative_reinvention_does_not_flag_a_family_with_a_referenced_member
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:863  tests::duplicative_reinvention_does_not_flag_a_family_of_test_functions
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:936  tests::connectivity_drop_counts_a_test_only_cross_file_caller_when_include_tests_is_true
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:985  tests::connectivity_drop_does_not_count_a_test_only_cross_file_caller_when_include_tests_is_false
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:1039  tests::duplicative_reinvention_does_not_flag_a_family_with_a_generated_file_member
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:1111  tests::duplicative_reinvention_flags_a_family_whose_only_caller_is_invisible_proc_macro_generated_code
  [warn] complexity-inflation src/rules/slop_structural_deep.rs:1256  tests::duplicative_reinvention_registry_example_still_triggers_the_rule
  [warn] complexity-inflation src/rules/slopsquat.rs:2156  tests::dep_single_maintainer_cannot_distinguish_two_active_owners_from_two_dormant_ones
  [warn] complexity-inflation src/sarif.rs:121  tests::render_produces_a_minimal_valid_sarif_log
  [warn] maintainability-index src/advisory/advisories.rs:1  src/advisory/advisories.rs
  [warn] maintainability-index src/advisory/coverage.rs:1  src/advisory/coverage.rs
  [warn] maintainability-index src/advisory/mutants.rs:1  src/advisory/mutants.rs
  [warn] maintainability-index src/baseline.rs:1  src/baseline.rs
  [warn] maintainability-index src/commands/advisory_commands.rs:1  src/commands/advisory_commands.rs
  [warn] maintainability-index src/commands/analysis_commands.rs:1  src/commands/analysis_commands.rs
  [warn] maintainability-index src/commands/baseline_output.rs:1  src/commands/baseline_output.rs
  [warn] maintainability-index src/commands/combined_analysis.rs:1  src/commands/combined_analysis.rs
  [warn] maintainability-index src/commands/deep_commands.rs:1  src/commands/deep_commands.rs
  [warn] maintainability-index src/commands/workspace_commands.rs:1  src/commands/workspace_commands.rs
  [warn] maintainability-index src/deep.rs:1  src/deep.rs
  [warn] maintainability-index src/finding.rs:1  src/finding.rs
  [warn] maintainability-index src/functions.rs:1  src/functions.rs
  [warn] maintainability-index src/health_score.rs:1  src/health_score.rs
  [warn] maintainability-index src/ingest.rs:1  src/ingest.rs
  [warn] maintainability-index src/main.rs:1  src/main.rs
  [warn] maintainability-index src/reachability.rs:1  src/reachability.rs
  [warn] maintainability-index src/report.rs:1  src/report.rs
  [warn] maintainability-index src/rules/api_surface.rs:1  src/rules/api_surface.rs
  [warn] maintainability-index src/rules/api_surface_deep.rs:1  src/rules/api_surface_deep.rs
  [warn] maintainability-index src/rules/boundaries.rs:1  src/rules/boundaries.rs
  [warn] maintainability-index src/rules/boundaries_deep.rs:1  src/rules/boundaries_deep.rs
  [warn] maintainability-index src/rules/complexity.rs:1  src/rules/complexity.rs
  [warn] maintainability-index src/rules/dead_code.rs:1  src/rules/dead_code.rs
  [warn] maintainability-index src/rules/dead_trait_impl.rs:1  src/rules/dead_trait_impl.rs
  [warn] maintainability-index src/rules/dep_graph.rs:1  src/rules/dep_graph.rs
  [warn] maintainability-index src/rules/deps.rs:1  src/rules/deps.rs
  [warn] maintainability-index src/rules/duplication.rs:1  src/rules/duplication.rs
  [warn] maintainability-index src/rules/feature_matrix.rs:1  src/rules/feature_matrix.rs
  [warn] maintainability-index src/rules/module_graph.rs:1  src/rules/module_graph.rs
  [warn] maintainability-index src/rules/pattern.rs:1  src/rules/pattern.rs
  [warn] maintainability-index src/rules/principle.rs:1  src/rules/principle.rs
  [warn] maintainability-index src/rules/security.rs:1  src/rules/security.rs
  [warn] maintainability-index src/rules/slop.rs:1  src/rules/slop.rs
  [warn] maintainability-index src/rules/slop_structural.rs:1  src/rules/slop_structural.rs
  [warn] maintainability-index src/rules/slop_structural_deep.rs:1  src/rules/slop_structural_deep.rs
  [warn] maintainability-index src/rules/slop_text.rs:1  src/rules/slop_text.rs
  [warn] maintainability-index src/rules/slopsquat.rs:1  src/rules/slopsquat.rs
  [warn] maintainability-index src/suppression.rs:1  src/suppression.rs
  [warn] abstraction-inflation src/rules/principle.rs:518  Finder
  [warn] abstraction-inflation src/rules/principle.rs:1251  Finder
  [warn] abstraction-inflation src/rules/principle.rs:1924  Finder
  [warn] integer-cast-risk src/advisory/clippy_import.rs:87  parse_clippy_report
  [warn] integer-cast-risk src/advisory/clippy_import.rs:88  parse_clippy_report
  [warn] integer-cast-risk src/advisory/mutants.rs:126  parse_mutants_report
  [warn] integer-cast-risk src/advisory/mutants.rs:145  parse_mutants_report
  [warn] integer-cast-risk src/deep.rs:359  tests::reference_count_distinguishes_used_from_dead_pub_items
  [warn] integer-cast-risk src/deep.rs:361  tests::reference_count_distinguishes_used_from_dead_pub_items
  [warn] integer-cast-risk src/deep.rs:506  tests::reference_count_distinguishes_used_from_dead_pub_items_for_methods_too
  [warn] integer-cast-risk src/deep.rs:508  tests::reference_count_distinguishes_used_from_dead_pub_items_for_methods_too
  [warn] integer-cast-risk src/deep.rs:576  tests::a_position_not_on_a_symbol_is_an_unresolved_error_not_zero_references
  [warn] integer-cast-risk src/deep.rs:579  tests::a_position_not_on_a_symbol_is_an_unresolved_error_not_zero_references
  [warn] integer-cast-risk src/deep.rs:600  tests::a_position_not_on_a_symbol_is_an_unresolved_error_not_zero_references
  [warn] integer-cast-risk src/deep.rs:662  tests::reference_count_sees_a_call_originating_inside_cfg_test_code
  [warn] integer-cast-risk src/reachability.rs:302  entry_point_positions
  [warn] integer-cast-risk src/reachability.rs:372  find_item_position
  [warn] integer-cast-risk src/rules/api_surface_deep.rs:541  re_export_chain_findings
  [warn] integer-cast-risk src/rules/api_surface_deep.rs:627  resolve_span_node
  [warn] integer-cast-risk src/rules/api_surface_deep.rs:628  resolve_span_node
  [warn] integer-cast-risk src/rules/complexity.rs:164  analyze_file
  [warn] integer-cast-risk src/rules/complexity.rs:171  analyze_file
  [warn] integer-cast-risk src/rules/complexity.rs:245  ComplexityVisitor::visit_expr
  [warn] integer-cast-risk src/rules/complexity.rs:246  ComplexityVisitor::visit_expr
  [warn] integer-cast-risk src/rules/complexity.rs:505  trait_bound_count
  [warn] integer-cast-risk src/rules/complexity.rs:520  trait_bound_count
  [warn] integer-cast-risk src/rules/complexity.rs:655  ExpressionShapeVisitor::visit_expr
  [warn] integer-cast-risk src/rules/complexity.rs:661  ExpressionShapeVisitor::visit_expr
  [warn] integer-cast-risk src/rules/complexity.rs:665  ExpressionShapeVisitor::visit_expr
  [warn] integer-cast-risk src/rules/complexity.rs:669  ExpressionShapeVisitor::visit_expr
  [warn] integer-cast-risk src/rules/complexity.rs:673  ExpressionShapeVisitor::visit_expr
  [warn] integer-cast-risk src/rules/complexity.rs:677  ExpressionShapeVisitor::visit_expr
  [warn] integer-cast-risk src/rules/complexity.rs:829  analyze_file_halstead
  [warn] integer-cast-risk src/rules/complexity.rs:831  analyze_file_halstead
  [warn] integer-cast-risk src/rules/dead_code.rs:685  offset_and_line
  [warn] integer-cast-risk src/rules/dead_code.rs:1566  scan_file_for_dead_code
  [warn] integer-cast-risk src/rules/dead_code.rs:2516  tests::an_unresolvable_position_is_a_collected_error_not_a_finding
  [warn] integer-cast-risk src/rules/feature_matrix.rs:103  collect_candidates
  [warn] integer-cast-risk src/rules/feature_matrix.rs:111  collect_candidates
  [warn] integer-cast-risk src/rules/security.rs:628  UnsafeBlockSizeVisitor::visit_expr_unsafe
  [warn] integer-cast-risk src/rules/slop_structural_deep.rs:242  collect_file_fan_in
  [warn] integer-cast-risk src/rules/slop_structural_deep.rs:445  monomorphization_load_findings

health score: 98.8 (A) — 59610 authored LOC, 0 fail, 24 warn, 333 advisory (not scored)
  • health
  • complexity
  • score

Workspace map

examples/map.txtDetail: Workspace map →
cargo judge map
workspace map: 1 crates, 54 authored files

complexity attention (production code, measured total cyclomatic, not a verdict):
  #1   365 total,  16 max, 130 functions  src/rules/principle.rs
  #2   266 total,  24 max,  41 functions  src/commands/analysis_commands.rs
  #3   221 total,  16 max,  79 functions  src/rules/slop.rs
  #4   189 total,  13 max,  74 functions  src/rules/pattern.rs
  #5   181 total,  16 max,  40 functions  src/rules/duplication.rs
  #6   168 total,  25 max,  48 functions  src/rules/deps.rs
  #7   165 total,  14 max,  50 functions  src/rules/boundaries.rs
  #8   144 total,  29 max,  29 functions  src/rules/complexity.rs
  #9   134 total,  16 max,  42 functions  src/main.rs
  #10  134 total,  14 max,  61 functions  src/rules/slopsquat.rs
  #11  131 total,  18 max,  21 functions  src/commands/advisory_commands.rs
  #12  124 total,  10 max,  51 functions  src/rules/dead_code.rs
  #13  120 total,  17 max,  45 functions  src/rules/security.rs
  #14  115 total,  23 max,  11 functions  src/commands/workspace_commands.rs
  #15   97 total,  21 max,  25 functions  src/rules/api_surface_deep.rs

duplication attention (repeated tokens, not an automatic merge recommendation):
  #1  5 members × 27 tokens across 1 files  build_functional_core_imperative_shell_heuristic, build_law_of_demeter_heuristic, build_bounded_resources_loop_heuristic
  #2  4 members × 20 tokens across 2 files  run_dupes, run_deps, run_coverage
  #3  3 members × 95 tokens across 3 files  attrs_have_cfg_test, attrs_have_cfg_test, attrs_have_cfg_test
  #4  3 members × 58 tokens across 1 files  run_dupes, run_deps, run_coverage
  #5  3 members × 41 tokens across 2 files  evaluate_module_boundary_rule, unlinked_file_findings, orphan_module_findings
  • map
  • planning

Markdown summary

examples/summary.mdDetail: Markdown summary →
cargo judge --format markdown
# Judge summary

- 671 evidence-backed findings · 333 advisory heuristics
- boundary rules: 0 not checked (no judge.toml)

## Evidence-backed findings: 671

| rule | count | representative location |
|---|---|---|
| duplicate-code | 635 | src/rules/principle.rs:550 (build_functional_core_imperative_shell_heuristic) |
| panic-in-lib | 22 | src/advisory/coverage.rs:336 (untested_hotspots) |
| suppression-debt | 11 | src/commands/combined.rs:178 (clippy::too_many_arguments) |
| swallowed-result | 2 | src/rules/slopsquat.rs:356 (write_cache) |
| restating-comment | 1 | src/rules/complexity.rs:1457 (tests::maintainability_index_matches_hand_calculation) |

## Advisory heuristics (no verdict or score effect): 333

| rule | count | representative location |
|---|---|---|
| complexity-inflation | 243 | src/advisory/advisories.rs:330 (known_vulnerability_finding) |
| integer-cast-risk | 39 | src/advisory/clippy_import.rs:87 (parse_clippy_report) |
| maintainability-index | 39 | src/advisory/advisories.rs:1 (src/advisory/advisories.rs) |
| silent-default | 9 | src/advisory/advisories.rs:164 (parse_audit_report) |
| abstraction-inflation | 3 | src/rules/principle.rs:518 (Finder) |

## Next steps

- cargo judge dupes clone families, grouped and prioritized
- cargo judge --details every finding and location
- cargo judge --format json full machine-readable report in .judge/judge.json
  • markdown
  • review

Rule explanation

examples/explain-rule.txtDetail: Rule explanation →
cargo judge explain-rule swallowed-result
rule: swallowed-result
  evidence class: derived_fact
  verdict effect: gating
  preconditions: Always evaluated (Fast Tier; part of bare `cargo judge`, `audit`, and `health`'s slop block).
  exclusions: Syntax-only: only `let _ = fallible();` and a bare `.ok();` statement are matched; other ways of discarding a `Result` are not. Exempt inside `Drop::drop`'s own body (`impl Drop for _ { fn drop(&mut self) { .. } }`, matched by trait path's last segment): `drop` cannot return a `Result`, so `let _ = fallible();` is the only correct idiom there, not a discarded error.
  allowed wording: State as an exact fact of the declared inputs (e.g. an occurrence count) — never as a quality judgment. The syntax/manifest fact is certain; whether it constitutes a real problem is not (todo.md §17.3).
  example:
    fn save_settings(path: &std::path::Path, data: &str) {
        let _ = std::fs::write(path, data);
    }
  why it matters: Discarding a `Result` with `let _ = ...` throws away the one signal that the operation could fail — a failed disk write here looks exactly like a successful save to every caller downstream.
  • rules
  • registry