Skip to content

Built-in Checks

Built-in checks run entirely in Node.js with no external tools required. All are enabled by default and work on any project.

Code Size & Complexity

CheckWhat it detectsDefault thresholds
Line CountSource files that are too longwarn ≥ 300, fail ≥ 500 lines
Function LengthFunctions / methods that are too longwarn ≥ 40, fail ≥ 80 lines
Cyclomatic ComplexityFunctions with too many brancheswarn ≥ 10, fail ≥ 20
File SizeFiles exceeding size limitswarn ≥ 50 KB, fail ≥ 200 KB
Long LinesLines exceeding column widthwarn if >5% of lines over 120 chars
Import DepthDeep ../../../ import chainswarn ≥ 4, fail ≥ 6 levels
Directory DepthFolder nesting too deepwarn ≥ 7, fail ≥ 10 levels
Dependency CountToo many direct dependencieswarn ≥ 50, fail ≥ 100

Code Quality & Maintainability

CheckWhat it detects
TODO CountTODO, FIXME, HACK, BUG, XXX, NOSONAR markers in comments
Commented CodeBlocks of source code that have been commented out
Duplicate FilesExact binary-identical files with different names
Test RatioRatio of test files to source files — warns when tests are sparse
Mixed IndentFiles mixing tabs and spaces inconsistently
EncodingNon-UTF-8 files that cause cross-platform issues
Debug Leaksconsole.log, print(), debugger, var_dump(), dd() in production code
Secret LeaksHardcoded API keys, tokens, passwords, private keys
Gitignore CheckFiles tracked by git that match .gitignore patterns
Magic NumbersHardcoded numeric literals that should be named constants
Parameter CountFunctions / methods with too many parameters
Barrel FilesOversized index.ts/js re-export files that hurt tree-shaking and build times

Architecture & Design

CheckWhat it detects
Coupling MetricsHigh afferent/efferent coupling; flags “god files” and architecturally unstable modules
Cross-Layer ImportsForbidden import directions (e.g. UI components importing Prisma; API routes importing React)
Component InventorySimilar UI components/hooks grouped by pattern — suggests consolidation opportunities
Heavy ImportsFull-package imports of large libraries (lodash, moment, @mui/material) that block tree-shaking

Type Safety & Documentation

CheckWhat it detects
Any CoverageTypeScript any usage — counts explicit annotations, casts (as any), generics
JSDoc CoveragePercentage of exported functions, classes, and interfaces with JSDoc comments

Test Quality

CheckWhat it detects
Test RatioTest-to-source file ratio
Empty Testsit() / test() / def test_ / #[test] blocks with no assertions
LCOV CoverageReads existing lcov.info or coverage-summary.json — reports line, branch, function % without running tests

CI/CD Security

CheckWhat it detects
GitHub Actions AuditUnpinned actions, pull_request_target misuse, ${{ }} injection, hardcoded secrets in workflow files

Configuring Thresholds

Every built-in check supports enabled, and most support warnAt/failAt thresholds:

"devManager.quality.builtin.lineCount.enabled": true,
"devManager.quality.builtin.lineCount.warnLines": 300,
"devManager.quality.builtin.lineCount.failLines": 500,
"devManager.quality.builtin.functionLength.warnLines": 40,
"devManager.quality.builtin.functionLength.failLines": 80,
"devManager.quality.builtin.complexity.warnScore": 10,
"devManager.quality.builtin.complexity.failScore": 20,
"devManager.quality.builtin.parameterCount.warnAt": 4,
"devManager.quality.builtin.parameterCount.failAt": 7,
"devManager.quality.builtin.dependencyCount.warnAt": 50,
"devManager.quality.builtin.dependencyCount.failAt": 100

To disable a check entirely:

"devManager.quality.builtin.magicNumbers.enabled": false