---
title: Introduction
description: Poly-crap finds the functions in a codebase that are both complex and poorly tested.
---

Poly-crap finds the functions in a codebase that are both complex and poorly
tested. It parses your source with tree-sitter, reads the coverage report your
test runner already writes, and scores every function with the CRAP metric.
It supports TypeScript, JavaScript, Python, Go, Rust, and Java, and it ships
as one binary with no runtime dependencies.

## Three ways to use it

**[Gate a pull request](/gating/changed-functions)**

Fail the build when a changed function is too complex for its tests.

**[Hold a baseline](/gating/baselines)**

Fail the build when any score gets worse.

**[Scan a repository](/quickstart)**

Find the functions most worth testing or splitting next.

## Where to start

**[Install](/install)**

A prebuilt binary for macOS and Linux, or a Cargo build.

**[Coverage reports](/coverage)**

The formats poly-crap reads and how to produce one for each stack.

**[Options](/reference/options)**

Every flag and its key in `.poly-crap.toml`.

**[Troubleshooting](/troubleshooting)**

What each warning means and what to do about it.
