Cross-file root causes
Connect caller sites, render cascades, circular dependencies, and architecture boundaries instead of reviewing isolated warnings.
dotore finds cross-file root causes, explains their blast radius, and applies deterministic fixes across JavaScript, TypeScript, React, Angular, Python, and Rust.
cargo install --git https://github.com/joaodavidsilva/dotore.git
Installs the dotore CLI directly from GitHub. Requires the Rust toolchain.
yaml.load(...) without SafeLoader allows arbitrary Python object instantiation; use yaml.safe_load(...) instead..unwrap() in production Rust code; propagate errors with ?, match with let ... else, or use .unwrap_or_default().api/main.py- return yaml.load(open(path).read())+ return yaml.safe_load(open(path).read())- return requests.get(url)+ return requests.get(url, timeout=10.0) web/src/components/CheckoutCard.tsx- const [fullName, setFullName] = useState("");- useEffect(() => { setFullName(`${first} ${last}`); }, [first, last]);+ const fullName = `${first} ${last}`; Applied 3 autofixes across 2 files.
Real output from a small demo workspace (a React app, a Python API, a Rust CLI) seeded with common mistakes.
Parse each file once, build a cross-file project graph, and activate only the rules that match your project.
Connect caller sites, render cascades, circular dependencies, and architecture boundaries instead of reviewing isolated warnings.
Apply syntax-verified AST byte-range patches with dotore fix, or preview every change with --dry-run.
Manifests determine active rules. React checks stay out of Angular projects, and libraries skip application-only checks.
Group findings by root cause and blast radius, then generate Fix Capsules ranked from P0 to P3.
Scan changed files, contextual owners, or changed lines. Baselines let legacy repositories block only new regressions.
Send structured findings, source excerpts, invariants, and suggested patches to your coding agent.
Output from dotore 0.1.0 on the same demo workspace. The plan ranks 13 findings, why explains one in full, and the project graph finds import cycles and unused exports.
# Pri Blast Rule Where001 P1 86 no-derived-state Cart.tsx:3002 P1 60 rs-no-unwrap-in-production main.rs:1003 P1 55 no-pass-live-state-to-parent Cart.tsx:3004 P2 42 jsx-no-new-array-as-prop App.tsx:4...011 P3 15 circular-dependency a.ts:1012 P3 15 rs-cargo-missing-lockfile Cargo.toml:1013 P3 15 unused-export b.ts:3
Ranked by blast radius. Each row is a Markdown plan in plans/ with the code excerpt, a transformation recipe, and the invariants to preserve.
4 | const [total, setTotal] = useState(0); 5 | useEffect(() => { setTotal(items.reduce((a, b) => a + b, 0)); }, [items]);> 6 | useEffect(() => { onTotal(total); }, [total]); 7 | return <div onClick={() => setTotal(0)}>{total}</div>;
Recipe: call the parent callback alongside setState in the event handler, or lift the State Slot up to the parent Subject.
neverUsed has no importer in the analyzed project graph.Start with zero configuration, then adopt diff-aware checks and agent handoffs where they help.
Run static analysis across your project and calculate its deterministic Health Score.
dotore check --score
Group related findings into root causes with caller-site and blast-radius context.
dotore plan
Preview safe rewrites, apply them, or hand the complete remediation bundle to an agent.
dotore fix --dry-run
dotore analyzes multiple ecosystems in one Rust binary and adds cross-file caller sites, render cascades, root-cause grouping, Fix Capsules, and a shared Health Score. Rules activate automatically from your manifests.
Yes. Use dotore check --scope contextual --base origin/main or dotore check --baseline baseline.json so CI focuses on changed code or newly introduced regressions.
Run dotore check --handoff. dotore creates a structured remediation bundle with subject and caller-site excerpts, invariants, and exemplars, then launches a supported coding agent or prints the bundle.
No. It works out of the box and infers capabilities from package.json, angular.json, pyproject.toml, and Cargo.toml. Optional configuration can override rules, ignored files, and tags.
Install from source, run one command, and turn flat diagnostics into a prioritized remediation plan.