No server. No account. One binary.
Code is written faster than it can be reviewed. AST Metrics measures your codebase
(complexity, architecture, coupling, bus factor, test quality) and, on every pull request,
flags only what got worse.
Deterministic: same code, same verdict. Works offline: no data leaves your machine.
Fast: 20,000+ lines of code analyzed per second, on a laptop.
Go · PHP · Python · Rust · Java · C# · TypeScript
AST Metrics analyzing itself. Explore this report live, or try it on any public repository, without installing anything.
Install with Homebrew (macOS, Linux):
brew install ast-metrics/tap/ast-metricsor with the install script (any platform, downloads an ./ast-metrics binary in the current directory):
curl -fsSL https://install.ast-metrics.dev | shThen analyze your project:
ast-metrics analyze /path/to/your/codeYou get a summary right in your terminal: maintainability, estimated bug probability, coupling, and the hotspots worth refactoring first. Add --report-html=<dir> when you want a full report, or --tui to explore the results in a full-screen dashboard. Nothing is written to disk unless you ask for it.
Docker image, npm, pip, Composer,
.deb/.rpmpackages and manual downloads: see the installation instructions.
ast-metrics reviewIt compares your branch with its base and reports only new or worsened findings: a new overly complex function, a coupling regression, a class that lost maintainability. Legacy code stays quiet. Unlike AI code reviewers, it is deterministic and free: same code, same verdict, no per-seat pricing. Add --fail-on=high when you want it to block the merge.
| PR review | ast-metrics review flags only what got worse against the base branch |
| Architectural analysis | Coupling, instability, community detection: catch design drift early |
| Code metrics | Cyclomatic complexity, maintainability index, lines of code |
| Activity metrics | Commit history and bus factor: know who owns what |
| Linter | Enforce thresholds on complexity, coupling, volume and architecture |
| CI/CD ready | GitHub Actions, GitLab CI, any pipeline; exits non-zero on violations |
| Report formats | HTML dashboard, JSON, Markdown, SARIF, OpenMetrics |
| MCP server | Give AI coding agents architectural awareness |
The dependency graph: hubs, natural communities and circular dependencies at a glance.
ast-metrics init # create a .ast-metrics.yaml config file
ast-metrics ruleset add architecture # pick rulesets (volume, complexity...)
ast-metrics lintThresholds live in your YAML config: maximum complexity, coupling limits, forbidden dependencies between components, size limits per method... Legacy codebase with hundreds of violations? Run ast-metrics baseline once: it snapshots today's violations, and lint only fails on new ones.
➡️ Rulesets, thresholds and baseline
ast-metrics ci runs the linter, generates every report (HTML, JSON, Markdown, SARIF, OpenMetrics) and exits non-zero when violations are found. On GitHub, a single step is enough:
- uses: ast-metrics/action-ast-metrics@v2On each pull request, the action runs ast-metrics review and comments with only the new or worsened findings.
➡️ CI/CD guides: GitHub Actions, GitLab CI
AI coding agents read code linearly. Running as an MCP server, AST Metrics gives Claude Code, Cursor or Copilot on-demand access to complexity, coupling, dependencies and risk, so you can ask things like "What are the riskiest files to refactor?" or "What would break if I change the UserService class?".
ast-metrics mcp .Go, PHP, Python, Rust, Java, C# and TypeScript.
Discussions, bug reports and pull requests are welcome: start here. AST Metrics is open-source software licensed under the MIT license.
AST Metrics is built and maintained on free time. If it saved you some of yours:
- ⭐ Star the repository. It costs nothing and it is how most developers discover the tool.
- ❤️ Become a sponsor. Sponsorship directly funds maintenance time and the addition of new languages and metrics.
