Skip to content

Detector Overview

vibecop ships 35 detectors across 4 categories. Every detector is deterministic — same input always produces the same output, with zero LLM calls.

All Detectors

Quality (16 detectors)

IDNameDescriptionSeverity
god-functionGod FunctionFunctions exceeding line, complexity, or parameter thresholdserror/warning
god-componentGod ComponentReact components with too many hooks, lines, or importswarning
n-plus-one-queryN+1 QueryDB/API calls inside loops or .map(async ...) callbackswarning
unbounded-queryUnbounded QueryfindMany/findAll without a take/limit clauseinfo
debug-console-in-prodDebug Console in Prodconsole.log/console.debug left in production codewarning
dead-code-pathDead Code PathIdentical if/else branches, unreachable code after return/throwwarning
double-type-assertionDouble Type Assertionas unknown as X patterns that bypass TypeScript type safetywarning
excessive-anyExcessive AnyFiles with 4+ any type annotationswarning
todo-in-productionTODO in ProductionTODO/FIXME/HACK comments, escalated if security-relatedinfo/warning
empty-error-handlerEmpty Error HandlerCatch/except blocks that silently swallow errorswarning
excessive-comment-ratioExcessive Comment RatioFiles with >50% comment linesinfo
over-defensive-codingOver-Defensive CodingRedundant null checks on values that cannot be nullinfo
llm-call-no-timeoutLLM Call No Timeoutnew OpenAI()/new Anthropic() without timeout, .create() without max_tokenswarning
llm-unpinned-modelLLM Unpinned ModelMoving model aliases like "gpt-4o" that silently change behaviorwarning
llm-temperature-not-setLLM Temperature Not SetLLM .create() calls without explicit temperature parameterinfo
llm-no-system-messageLLM No System MessageChat API calls without a role: "system" messageinfo

Security (7 detectors)

IDNameDescriptionSeverity
sql-injectionSQL InjectionTemplate literals or string concatenation in SQL query methodserror
dangerous-inner-htmlDangerous innerHTMLdangerouslySetInnerHTML usage without sanitizationwarning
token-in-localstorageToken in localStorageAuth/JWT tokens stored in XSS-accessible storageerror
placeholder-in-productionPlaceholder in Productionyourdomain.com, changeme, xxx left in configerror
insecure-defaultsInsecure Defaultseval(), rejectUnauthorized: false, hardcoded credentialserror
unsafe-shell-execUnsafe Shell Execexec()/execSync() with dynamic args, subprocess with shell=Trueerror
dynamic-code-execDynamic Code Execeval(variable), new Function(variable) with non-literal argumentserror

Correctness (4 detectors)

IDNameDescriptionSeverity
unchecked-db-resultUnchecked DB ResultFire-and-forget database mutations (insert/update/delete)warning
undeclared-importUndeclared ImportImports not declared in package.json/requirements.txterror
mixed-concernsMixed ConcernsFiles importing both UI frameworks and database/server librarieswarning
hallucinated-packageHallucinated PackageDependencies not in top-5K npm allowlist (potential AI hallucination)info

Testing (8 detectors)

IDNameDescriptionSeverity
trivial-assertionTrivial Assertionexpect(true).toBe(true) and similar no-op testsinfo
over-mockingOver-MockingTest files with excessive mock/spy usageinfo
assertion-rouletteAssertion RouletteTests with too many assertions (default >5)warning
sleepy-testSleepy TestsetTimeout/time.sleep in tests causing flaky CIwarning
snapshot-only-testSnapshot-Only TestTest files where 100% of assertions are snapshotsinfo
empty-testEmpty TestTest functions with zero assertionsinfo
conditional-test-logicConditional Test LogicControl flow in tests where assertions may not executeinfo
no-error-path-testNo Error Path TestTest files with 3+ tests but no error path testinginfo

Category Breakdown

CategoryCountFocus
Quality16Code structure, complexity, LLM API usage
Security7Injection, unsafe execution, credential storage
Correctness4Missing dependencies, unchecked results, hallucinated packages
Testing8Test quality, assertion validity, mock overuse

Severity Levels

SeverityMeaningExit Code
errorMust fix — security vulnerability or correctness bug1
warningShould fix — code quality or maintainability issue1
infoConsider fixing — style or best practice suggestion1

All severity levels cause exit code 1. Use .vibecop.yml to change severity levels or disable specific detectors.

Detailed Pages