Polyglot codebase intelligence
One binary. Six languages.
Six analyses.
Your repo has a Rails app, a Spring service, a Go module, and a pile of TypeScript. Each one has its own linter, its own report shape, and its own quality bar. Stratify parses all of them into one model and runs the same six analyses on every line. One gate. One report. No servers, no accounts.
Add the gate to CI
- uses: stratify-dev/stratify@v0.4.0
with:
fail-on: warning
Or run it locally
brew install stratify-dev/tap/stratify
How it flows
Six languages compress into one model. Six analyses read only the model, so each one is written once and works everywhere. One stream of findings fans out to every surface.
What a run looks like
$ stratify check .
warn Unused.java:2 unused function `neverCalled`
info App.java:6 possibly unused function `helper`
2 finding(s).
Stratify says unused when it proved the call graph, and possibly unused when it could not. It never hides a real finding behind a guess.
Why teams run it
-
Six languages, one engine
Every language parses into the same intermediate representation. Each analysis is written once and works everywhere, so a polyglot repo gets one consistent report instead of six dialects of "warning".
-
It tells you how sure it is
Every finding carries a confidence level. Act on the warnings, triage the rest. No more muting a whole rule because it cried wolf twice.
-
It meets you where you work
The same analysis drives the CLI, the CI gate, SARIF annotations, your editor, your coding agent, and your dashboards. One engine, six front doors.
The six analyses
They all run in a single pass. Read the details.
Dead code
Functions and methods nothing reaches, resolved across files.
Duplication
Copy-pasted and renamed blocks, across files and across languages.
Complexity
Functions with high cyclomatic complexity, ranked by severity.
Churn hotspots
Complex code changing often. The riskiest spots in the repo.
Dependency cycles
Circular imports between files and packages.
Layer boundaries
Imports breaking the architecture rules you wrote down.
Coverage today
| Language | Dead code | Duplication | Complexity | Hotspots | Cycles | Boundaries |
|---|---|---|---|---|---|---|
| Java | Yes | Yes | Yes | Yes | Yes | Yes |
| Ruby | Yes | Yes | Yes | Yes | Yes | Yes |
| TypeScript | Yes | Yes | Yes | Yes | Yes | Yes |
| Python | Yes | Yes | Yes | Yes | Yes | Yes |
| Go | Yes | Yes | Yes | Yes | Yes | Yes |
| Rust | Yes | Yes | Yes | Yes | Pending | Pending |
Six front doors
CLI
stratify check .CI gate
- uses: stratify-dev/stratify@v0.4.0SARIF
stratify check . --format sarifMCP
stratify mcpLSP
stratify lspOpenTelemetry
OTEL_EXPORTER_OTLP_ENDPOINT=...
Scan your repo now
brew install stratify-dev/tap/stratify
stratify check .