Skip to content

feat: v5.0 multi-language analysis format#19

Merged
ffedoroff merged 10 commits into
mainfrom
docs/v5-multilang-format
Jun 28, 2026
Merged

feat: v5.0 multi-language analysis format#19
ffedoroff merged 10 commits into
mainfrom
docs/v5-multilang-format

Conversation

@ffedoroff

Copy link
Copy Markdown
Owner

v5.0 multi-language analysis format

Reworks code-ranker for first-class multi-language analysis and a per-language
config model, with the docs and viewer updated to match.

Highlights

  • v5.0 multi-language analysis + per-language config — each active plugin
    contributes its own language snapshot; rules resolve as [plugins.base]
    [plugins.<lang>].
  • Canonical language renames (javascript→js, markdown→md,
    typescript→ts) and the corpus move languages/ → plugins/.
  • --prompt <ID> is the prompt path (removed --output.prompt); the
    auto-derived check fix now points at the AI prompt command.
  • Viewer: header language dropdown; markdown ungated by default; DRY Halstead
    specs.
  • Multi-language hubs split to clear the HK gate.

Tests / coverage (this PR's final commit)

Raised unit-test coverage on the changed CLI paths flagged by make diff-coverage, per contrib/unit-tests.md:

  • recommend::resolve_language_snap resolution matrix (alias, single, id by
    principle/metric, ambiguity error, first-language fallback, empty snapshot)
  • config overrides: --ignore array coercion, integer cycle budget, fractional
    threshold, leaf float/string fallback, plugins.<lang> path guard,
    scalar→table replace, alias-block deep-merge into the canonical block
  • analyze_from_snapshot re-gating + analysis-only flag rejection (test module
    extracted to analyze_test.rs to satisfy the project's own TST gate)
  • docs: build_specs("base") neutral catalog + languages_hint all-languages
    branch
  • pipeline: all-empty bail!; assert_disjoint_languages one-file-one-language
    invariant

Remaining diff-coverage gaps are llvm-cov brace/region artifacts on covered
logic, an error-propagation ?, and one release-only bail! (annotated with a
// COVERAGE: note).

make all passes (build + test + lint + coverage). Workspace line coverage
96.97%.

Describe the multi-language model as the only reality (no back-compat):
- config: plugins = [...] array, [languages.<lang>] per-language override of
  any plugin key, virtual [languages.base] base layer; version 5.0
- CLI: --plugins, --language, --config languages.<lang>.<key>=value;
  docs keeps singular --plugin
- plugin resolution: auto-detect < config < console; auto-detect all matching
  languages, no ambiguity error; zero-detect / extension-conflict errors
- snapshot schema 5.0: plugins[] + languages.<lang>.{graphs,principles,prompt};
  Violation gains language field
- viewer: language switcher in header; reads languages.<lang>
- contrib: prompt-eval-metrics.py reads languages.<lang>.graphs; unit-tests.md
  uses resolve_plugins/detect_all/check_violations_all
Analyze every relevant language in one run; one report covers all.

Data model & schema (5.0):
- Snapshot: plugins[] + languages.<lang>.{graphs,principles,prompt} (was a single
  plugin/graphs); SnapshotInit builder; Violation gains a language field.
- CONFIG_VERSION/SCHEMA_VERSION 5.0; app version 5.0.0.

Config — everything per-language under [plugins.<lang>] (base in [plugins.base]):
- [plugins].enabled = [...] active set (replaces the scalar plugin / plugins array).
- rules/ignore/metrics/levels/report/principles are per-language; only [output] and
  [templates] stay global. Config::language_config(lang) resolves base then lang.
- effective_plugin_config injects the merged config into every plugin entry point
  (extensions/detect_markers/... overridable per language); reserved: enabled, base.
- --plugins / --language flags; --config plugins.<lang>.<key>=value generic setter.

Pipeline / consumers:
- detect_all + resolve_plugins (auto-detect < config < console), extension-uniqueness
  guard + runtime one-file-one-language assert; per-language gate/cycles/metrics.
- check shows the language per finding; fix -> docs <lang> <metric>; tune ->
  plugins.<lang>.rules...; SARIF/codequality fingerprints are language:rule:location.

docs command restructured to: docs <lang> <subject> (language first). Bare docs lists
languages, docs <lang> = catalog, a subject without a language errors, base = the
language-agnostic catalog; catalog/closing notes carry the language.

Viewer: per-language switcher in the header; reads languages.<lang>.

Tests/goldens regenerated for all languages; docs synced to the final format;
.claude/commands/ud.md translated to Russian + path/git-diff fixes.
The v5.0 multi-language work pushed three modules past the file.hk
god-object ceiling (sloc × (fan_in × fan_out)²). Split the two genuinely
new hubs by responsibility, and bump the gate for the accepted trait hub:

- plugin/mod.rs (2.1× over): split the CLI plugin facade into method
  dispatch (mod.rs) and selection policy (new resolve.rs:
  effective_plugin_config / detect_all / resolve_plugins /
  validate_extension_uniqueness), re-exported so call sites are unchanged.
- config/model.rs (1.7× over): move language_config (config resolution,
  not data shape) into load.rs next to the merge machinery, and the
  threshold-literal pre-quoting pass into a new config/thresholds.rs.
  Both shed coupling/size without adding back edges to the data model.
- plugin-api/plugin.rs (1.1× over): the LanguagePlugin trait is the
  documented irreducible hub; the multi-language config injection plus the
  facade split raised fan_in 12→14. Reducing it would be metric-gaming, so
  bump the ceiling 350K→500K deliberately and update the rationale comment.

cargo run check is green; make all + make e2e pass.
A threshold metric without an authored remediation previously had its
`fix` line auto-derived as a docs pointer (`code-ranker docs <lang>
<key>`). Point it instead at the command that generates the AI fix-prompt
for that metric: `code-ranker report --plugins <lang> --prompt <key>` —
so the fix line is directly actionable (run it to get the prompt).

Authored remediations (builtin.toml coupling specs, cycle catalogs) are
unchanged. Updated the rule_doc test and the two sample `check` output
blocks in CLI.md / ERRORS.md plus the ERRORS.md behaviour description.
The auto-targeted, file-artifact `--output.prompt` / `--output.prompt.path`
output duplicated `--prompt <ID>` (which prints a named principle/metric prompt
to stdout). Drop it and keep one prompt path:

- cli/main/report: remove the `--output.prompt[.path]` flags, the
  `ReportOutputs.prompt*` fields, the "requires --top 1" / auto-worst validation,
  and the prompt branch of write_recommendations (now `write_scorecard`).
- recommend: remove the now-unused `worst_principle` (only the auto-worst branch
  used it). `compose_prompt` stays — `--prompt <ID>` (run_direct) and the viewer
  share it. The scorecard next-step hint now points at `--prompt <ID>`.
- config: drop the `[output.prompt]` section and `OutputConfig.prompt`.
- docs/contrib: sweep every `--output.prompt` reference to `--prompt <ID>`
  (stdout, redirect for a file); update DESIGN component model + viewer PRD.

Kept: --output.scorecard, --prompt <ID>, check --output-format prompt.
make all + make e2e green.
…escript→ts; corpus languages/→plugins/

Short names are now the canonical plugin names; the long names become aliases
(`javascript`→js, `markdown`→md, `typescript`→ts). `python` stays canonical
(alias `py`); rust/c/cpp/csharp/go unchanged.

- plugins: rename code dirs js/md/ts, structs JsPlugin/MdPlugin/TsPlugin,
  name() literals, inventory submissions, re-exports; config.toml aliases + doc_lang.
- corpus: repo-root `languages/` → `plugins/` (inner `typescript/`→`ts/`);
  doc_base, build.rs corpus walk, and lint/lychee/markdownlint globs follow.
- goldens regenerated for js/md/ts (language key) and doc_url patched for all
  languages (languages/→plugins/); no metric drift.
- tests: EXPECTED set, alias resolution, e2e capture names, corpus-path reads.
- docs/contrib/.claude swept: corpus paths, canonical↔alias flip, examples.

No version bump: snapshot shape unchanged, old names still resolve via aliases.
make all + make e2e green.
…fault; DRY Halstead specs

Viewer: the multi-language switcher is now a <select> dropdown in the report
header (matching the active-snapshot control's height/style), not a tab row below
it. On open it defaults to the largest language (most nodes+edges) instead of the
first key; option labels are the canonical names verbatim (lowercase) with a custom
chevron.

Config defaults:
- markdown ships its gate OFF by default — [plugins.md.rules.cycles] mutual/chain
  = false in the CLI defaults.toml (cross-document link cycles are normal for docs;
  no per-file thresholds either). md sample goldens regenerated (no cycle data).
- DRY: the language-agnostic Halstead [specs.n1]/[specs.n2] descriptions, copy-
  pasted into 6 language configs, move to the plugins base defaults.toml; eta1/eta2
  (per-language token lists) stay local.

Repo self-config: code-ranker.toml drops the rust-only pin (auto-detect all langs)
and ignores contrib/** (one-off dev helper scripts, not product code).

Docs: viewer PRD/DESIGN + CLI.md describe the header dropdown + largest-language
default; config.md notes markdown's cycles-off default. make all + make e2e green.
…line guards

Raise unit-test coverage on the v5 multi-language CLI paths flagged by
diff-coverage, following contrib/unit-tests.md:

- recommend: resolve_language_snap (alias, single, id-by-principle/metric,
  ambiguity, first-language fallback, empty snapshot)
- config overrides: --ignore array coercion, integer cycle budget, fractional
  threshold, leaf float/string fallback, plugins.<lang> path guard, scalar→table
  replace, alias-block deep-merge into canonical
- analyze: analyze_from_snapshot re-gating + analysis-only flag rejection
  (extracted the test module to analyze_test.rs to clear the TST gate)
- docs: build_specs("base") neutral catalog + languages_hint all-languages branch
- pipeline: all-empty bail; assert_disjoint_languages invariant (debug panic)

Remaining diff-coverage gaps are llvm-cov brace/region artifacts on covered
logic, an error-propagation ?, and one release-only bail (annotated).
@coderabbitai

coderabbitai Bot commented Jun 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 259 files, which is 109 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 262b7296-5573-41c0-ae27-c921e648ed84

📥 Commits

Reviewing files that changed from the base of the PR and between 6afe7fe and 0083642.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (259)
  • .github/scripts/code_ranker_comment.py
  • .github/workflows/ci.yml
  • .github/workflows/code-ranker.yml
  • .github/workflows/crates-io.yml
  • .github/workflows/pr-report.yml
  • .markdownlint-cli2.jsonc
  • Cargo.toml
  • Makefile
  • README.md
  • code-ranker.toml
  • contrib/prompt-eval-metrics.py
  • contrib/prompting-self-improve.md
  • contrib/unit-tests.md
  • crates/code-ranker-cli/build.rs
  • crates/code-ranker-cli/src/analyze.rs
  • crates/code-ranker-cli/src/analyze_test.rs
  • crates/code-ranker-cli/src/check.rs
  • crates/code-ranker-cli/src/check/sarif.rs
  • crates/code-ranker-cli/src/check/values.rs
  • crates/code-ranker-cli/src/check_test.rs
  • crates/code-ranker-cli/src/cli.rs
  • crates/code-ranker-cli/src/config/defaults.toml
  • crates/code-ranker-cli/src/config/load.rs
  • crates/code-ranker-cli/src/config/load/overrides.rs
  • crates/code-ranker-cli/src/config/load_test.rs
  • crates/code-ranker-cli/src/config/mod.rs
  • crates/code-ranker-cli/src/config/model.rs
  • crates/code-ranker-cli/src/config/model_test.rs
  • crates/code-ranker-cli/src/config/rules.rs
  • crates/code-ranker-cli/src/config/rules_test.rs
  • crates/code-ranker-cli/src/config/thresholds.rs
  • crates/code-ranker-cli/src/config/thresholds_test.rs
  • crates/code-ranker-cli/src/config/violations.rs
  • crates/code-ranker-cli/src/config/violations_test.rs
  • crates/code-ranker-cli/src/docs.rs
  • crates/code-ranker-cli/src/docs_test.rs
  • crates/code-ranker-cli/src/export.rs
  • crates/code-ranker-cli/src/main.rs
  • crates/code-ranker-cli/src/pipeline.rs
  • crates/code-ranker-cli/src/pipeline/assemble.rs
  • crates/code-ranker-cli/src/pipeline/helpers.rs
  • crates/code-ranker-cli/src/pipeline_test.rs
  • crates/code-ranker-cli/src/plugin/mod.rs
  • crates/code-ranker-cli/src/plugin/mod_test.rs
  • crates/code-ranker-cli/src/plugin/resolve.rs
  • crates/code-ranker-cli/src/recommend.rs
  • crates/code-ranker-cli/src/recommend/scorecard.rs
  • crates/code-ranker-cli/src/recommend_test.rs
  • crates/code-ranker-cli/src/report.rs
  • crates/code-ranker-cli/src/templates.rs
  • crates/code-ranker-cli/src/templates_test.rs
  • crates/code-ranker-cli/tests/e2e.rs
  • crates/code-ranker-graph/src/lib.rs
  • crates/code-ranker-graph/src/snapshot.rs
  • crates/code-ranker-graph/src/version.rs
  • crates/code-ranker-plugin-api/src/plugin.rs
  • crates/code-ranker-plugins/src/defaults.toml
  • crates/code-ranker-plugins/src/languages/c/mod.rs
  • crates/code-ranker-plugins/src/languages/c/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/c/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/c/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/c/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/cfamily/config.toml
  • crates/code-ranker-plugins/src/languages/cpp/config.toml
  • crates/code-ranker-plugins/src/languages/cpp/mod.rs
  • crates/code-ranker-plugins/src/languages/cpp/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/cpp/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/cpp/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/cpp/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/csharp/config.toml
  • crates/code-ranker-plugins/src/languages/csharp/mod.rs
  • crates/code-ranker-plugins/src/languages/csharp/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/csharp/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/csharp/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/csharp/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/ecmascript/config.toml
  • crates/code-ranker-plugins/src/languages/ecmascript/mod.rs
  • crates/code-ranker-plugins/src/languages/ecmascript/tests/dialect.rs
  • crates/code-ranker-plugins/src/languages/go/config.toml
  • crates/code-ranker-plugins/src/languages/go/mod.rs
  • crates/code-ranker-plugins/src/languages/go/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/go/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/go/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/go/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/javascript/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/js/config.toml
  • crates/code-ranker-plugins/src/languages/js/mod.rs
  • crates/code-ranker-plugins/src/languages/js/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/js/tests/sample/code-ranker-check.codequality.json
  • crates/code-ranker-plugins/src/languages/js/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/js/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/js/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/js/tests/sample/src/a.js
  • crates/code-ranker-plugins/src/languages/js/tests/sample/src/a.test.js
  • crates/code-ranker-plugins/src/languages/js/tests/sample/src/b.js
  • crates/code-ranker-plugins/src/languages/js/tests/sample/src/c.js
  • crates/code-ranker-plugins/src/languages/js/tests/sample/src/complex.js
  • crates/code-ranker-plugins/src/languages/js/tests/sample/src/dynamic.js
  • crates/code-ranker-plugins/src/languages/js/tests/sample/src/m1.js
  • crates/code-ranker-plugins/src/languages/js/tests/sample/src/m2.js
  • crates/code-ranker-plugins/src/languages/markdown/tests/sample/code-ranker-check.codequality.json
  • crates/code-ranker-plugins/src/languages/markdown/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/md/config.toml
  • crates/code-ranker-plugins/src/languages/md/mod.rs
  • crates/code-ranker-plugins/src/languages/md/structure.rs
  • crates/code-ranker-plugins/src/languages/md/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/md/tests/sample/api.md
  • crates/code-ranker-plugins/src/languages/md/tests/sample/code-ranker-check.codequality.json
  • crates/code-ranker-plugins/src/languages/md/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/md/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/md/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/md/tests/sample/guide.md
  • crates/code-ranker-plugins/src/languages/md/tests/sample/index.md
  • crates/code-ranker-plugins/src/languages/md/tests/structure.rs
  • crates/code-ranker-plugins/src/languages/mod.rs
  • crates/code-ranker-plugins/src/languages/python/config.toml
  • crates/code-ranker-plugins/src/languages/python/mod.rs
  • crates/code-ranker-plugins/src/languages/python/tests/dialect.rs
  • crates/code-ranker-plugins/src/languages/python/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/python/tests/sample/code-ranker-check.codequality.json
  • crates/code-ranker-plugins/src/languages/python/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/python/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/python/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/rust/config.toml
  • crates/code-ranker-plugins/src/languages/rust/mod.rs
  • crates/code-ranker-plugins/src/languages/rust/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/rust/tests/sample/code-ranker-check.codequality.json
  • crates/code-ranker-plugins/src/languages/rust/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/rust/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/rust/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/ts/config.toml
  • crates/code-ranker-plugins/src/languages/ts/mod.rs
  • crates/code-ranker-plugins/src/languages/ts/tests/mod_rs.rs
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/code-ranker-check.codequality.json
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/code-ranker-check.sarif
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/code-ranker.toml
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/a.test.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/a.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/b.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/chain1.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/chain2.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/chain3.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/complex.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/lazy.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/types.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/src/util.ts
  • crates/code-ranker-plugins/src/languages/ts/tests/sample/tsconfig.json
  • crates/code-ranker-plugins/src/languages/typescript/tests/sample/code-ranker-report.json
  • crates/code-ranker-plugins/src/lib.rs
  • crates/code-ranker-plugins/src/tests/config.rs
  • crates/code-ranker-viewer/src/assets/app.js
  • crates/code-ranker-viewer/src/assets/base.css
  • crates/code-ranker-viewer/src/assets/diff.js
  • crates/code-ranker-viewer/src/assets/export-popup.js
  • crates/code-ranker-viewer/src/assets/index.html
  • crates/code-ranker-viewer/src/assets/layout.js
  • crates/code-ranker-viewer/src/assets/map-interactions.js
  • crates/code-ranker-viewer/src/assets/modal-content.js
  • crates/code-ranker-viewer/src/assets/modal.js
  • crates/code-ranker-viewer/src/assets/nav.js
  • crates/code-ranker-viewer/src/assets/node-popup.js
  • crates/code-ranker-viewer/src/assets/node-table.js
  • crates/code-ranker-viewer/src/assets/schema.js
  • crates/code-ranker-viewer/src/assets/snap-controls.js
  • crates/code-ranker-viewer/src/assets/source-links.js
  • crates/code-ranker-viewer/src/assets/summary.js
  • crates/code-ranker-viewer/src/assets/view-state.js
  • docs/DESIGN.md
  • docs/PRD.md
  • docs/ai-skill.md
  • docs/ci-integration/gitlab/rust/README.md
  • docs/ci-integration/gitlab/rust/minimal.example.yml
  • docs/code-ranker-cli/CLI.md
  • docs/code-ranker-cli/DESIGN.md
  • docs/code-ranker-cli/ERRORS.md
  • docs/code-ranker-cli/PRD.md
  • docs/code-ranker-cli/USE-CASES.md
  • docs/code-ranker-cli/config.md
  • docs/code-ranker-viewer/DESIGN.md
  • docs/code-ranker-viewer/PRD.md
  • docs/customization/README.md
  • docs/customization/cel-reference.md
  • docs/customization/config-resolution.md
  • docs/customization/custom-field-example.toml
  • docs/cycles.md
  • docs/e2e.md
  • docs/metric-correctness.md
  • docs/metric-tiers.md
  • docs/node_schema.md
  • docs/templates.md
  • docs/versions.md
  • plugins/base/ADP.md
  • plugins/base/AI.md
  • plugins/base/CPX.md
  • plugins/base/CoI.md
  • plugins/base/Cognitive.md
  • plugins/base/Cyclomatic.md
  • plugins/base/DIP.md
  • plugins/base/DRY.md
  • plugins/base/Fan-in.md
  • plugins/base/Fan-out.md
  • plugins/base/HK.md
  • plugins/base/ISP.md
  • plugins/base/KISS.md
  • plugins/base/LSP.md
  • plugins/base/LoD.md
  • plugins/base/MISU.md
  • plugins/base/OCP.md
  • plugins/base/SRP.md
  • plugins/base/YAGNI.md
  • plugins/base/metrics.md
  • plugins/python/ADP.md
  • plugins/python/CPX.md
  • plugins/python/CoI.md
  • plugins/python/DIP.md
  • plugins/python/DRY.md
  • plugins/python/ISP.md
  • plugins/python/KISS.md
  • plugins/python/LSP.md
  • plugins/python/LoD.md
  • plugins/python/MISU.md
  • plugins/python/OCP.md
  • plugins/python/SRP.md
  • plugins/python/YAGNI.md
  • plugins/python/metrics.md
  • plugins/rust/ADP.md
  • plugins/rust/CPX.md
  • plugins/rust/CoI.md
  • plugins/rust/Cognitive.md
  • plugins/rust/Cyclomatic.md
  • plugins/rust/DIP.md
  • plugins/rust/DRY.md
  • plugins/rust/Fan-in.md
  • plugins/rust/Fan-out.md
  • plugins/rust/HK.md
  • plugins/rust/ISP.md
  • plugins/rust/KISS.md
  • plugins/rust/LSP.md
  • plugins/rust/LoD.md
  • plugins/rust/MISU.md
  • plugins/rust/OCP.md
  • plugins/rust/SRP.md
  • plugins/rust/YAGNI.md
  • plugins/rust/metrics.md
  • plugins/ts/ADP.md
  • plugins/ts/CPX.md
  • plugins/ts/CoI.md
  • plugins/ts/DIP.md
  • plugins/ts/DRY.md
  • plugins/ts/ISP.md
  • plugins/ts/KISS.md
  • plugins/ts/LSP.md
  • plugins/ts/LoD.md
  • plugins/ts/MISU.md
  • plugins/ts/OCP.md
  • plugins/ts/SRP.md
  • plugins/ts/YAGNI.md
  • plugins/ts/metrics.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/v5-multilang-format

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jun 27, 2026

Copy link
Copy Markdown

code-ranker: ok

View report ↗

md: ok

No baseline yet.

python: ok

No baseline yet.

rust: ok

No baseline yet.

updated 2026-06-28 16:46 UTC

@codecov

codecov Bot commented Jun 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.71671% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 98.36%. Comparing base (6afe7fe) to head (0083642).

Files with missing lines Patch % Lines
crates/code-ranker-cli/src/analyze.rs 93.75% 1 Missing ⚠️
crates/code-ranker-cli/src/check.rs 98.11% 1 Missing ⚠️
...rates/code-ranker-cli/src/config/load/overrides.rs 99.08% 1 Missing ⚠️
crates/code-ranker-cli/src/export.rs 96.42% 1 Missing ⚠️
crates/code-ranker-cli/src/pipeline.rs 99.43% 1 Missing ⚠️
crates/code-ranker-cli/src/pipeline/helpers.rs 98.83% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #19      +/-   ##
==========================================
+ Coverage   97.96%   98.36%   +0.39%     
==========================================
  Files         124      128       +4     
  Lines       14911    16034    +1123     
==========================================
+ Hits        14608    15772    +1164     
+ Misses        303      262      -41     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

…op pr-report

Replace the bespoke pr-report.yml with the public report.yml@main reusable
workflow (install_from_source: true builds code-ranker from this checkout,
do_check: false keeps our PRs advisory). SARIF + verdict now live in
code-ranker-ci, so the local pr-report.yml and its comment script are removed.

Claude-Session: https://claude.ai/code/session_013ZmffaAWgLERpXGXHXBr7B
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

@ffedoroff ffedoroff merged commit f79d519 into main Jun 28, 2026
16 checks passed
@ffedoroff ffedoroff deleted the docs/v5-multilang-format branch June 28, 2026 17:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants