Skip to content

Benchmarks

All numbers below are real — run vibecop scan on any of these repos yourself to reproduce. Finding density = findings per 1,000 lines of code (findings/kLOC).

Methodology

How Findings Are Counted

Terminal window
vibecop scan <path> --format json --no-config --max-findings 2000

summary.total from JSON output. --no-config ensures no per-project suppression.

How LOC Is Counted

wc -l across all .ts, .tsx, .js, .jsx, .mjs, .cjs, .py files (excluding node_modules, dist, build).

Results

Established Projects (Professionally Maintained)

ProjectStarsFilesLOCFindingsDensity
fastify65K27574,4281241.7/kLOC
date-fns35K1,54399,8593083.1/kLOC
TanStack/query43K997148,4926524.4/kLOC
express66K14121,3461235.8/kLOC
zod35K35670,88696413.6/kLOC

Median: 4.4/kLOC | Average: 5.7/kLOC

Vibe-Coded Projects (AI-Generated/Assisted)

ProjectStarsFilesLOCFindingsDensity
dyad20K956147,2841,1798.0/kLOC
bolt.diy19.2K39271,63997713.6/kLOC
code-review-graph3.9K9527,11936113.3/kLOC
context751.3K719,20112914.0/kLOC
vibe-check-mcp480555,96411920.0/kLOC
magic-mcp4.6K141,0962825.5/kLOC
browser-tools-mcp7.2K128,34641449.6/kLOC

Median: 14.0/kLOC | Average: 20.6/kLOC

Comparison

MetricEstablishedVibe-codedRatio
Median density4.4/kLOC14.0/kLOC3.2x
Average density5.7/kLOC20.6/kLOC3.6x

Vibe-coded projects consistently trigger more findings per line of code.

Notes on Established Repo Findings

Some established repos show higher density for valid reasons:

  • zod (13.6/kLOC): 634 of 964 findings are excessive-any. Zod deliberately uses any for TypeScript type gymnastics — this is intentional, not a code smell.
  • date-fns (3.1/kLOC): 218 of 308 findings are excessive-comment-ratio. date-fns has extensive JSDoc documentation — by design, not an AI pattern.
  • express (5.8/kLOC): 73 of 123 findings are placeholder-in-production. Express uses example domains in comments.

vibecop detects patterns, not intent. Use .vibecop.yml to tune or disable detectors for your codebase.

v0.2 New Detector Impact

The 6 LLM/agent safety detectors added in v0.2 found 157 additional issues across the vibe-coded repos that v0.1 detectors missed entirely:

DetectorFindingsExample Repos
unsafe-shell-exec63dyad (47), context7 (6), code-review-graph (5)
llm-unpinned-model53bolt.diy (32), dyad (12), vibe-check-mcp (6)
llm-no-system-message39dyad (31), bolt.diy (7), vibe-check-mcp (1)
llm-call-no-timeout2vibe-check-mcp (2)

Zero v0.2 detector findings on the 5 established repos — they do not use LLM APIs or dynamic shell execution.

Reproducing

Fixture Benchmark

Run the benchmark script included in the vibecop repository:

Terminal window
bash scripts/benchmark.sh

Full Open-Source Benchmark

Clone any repo and scan it:

Terminal window
# Clone a repo
git clone --depth 1 https://github.com/fastify/fastify /tmp/fastify
# Scan with no config and high finding cap
vibecop scan /tmp/fastify --format json --no-config --max-findings 2000

The JSON output includes a summary.total field with the finding count. Count LOC with:

Terminal window
find /tmp/fastify -name '*.ts' -o -name '*.tsx' -o -name '*.js' -o -name '*.jsx' \
| grep -v node_modules | xargs wc -l