A code quality analyzer for JavaScript/TypeScript vibe coders.
Building with Cursor, Claude, or ChatGPT? jscan performs structural analysis to keep your codebase maintainable.
Working with Python? Check out pyscn
# Run analysis without installation
npx jscan analyze src/jscan-demo.mp4
- Dead code detection – CFG + DFS reachability analysis for unreachable code, unused imports/exports, and orphan files
- Clone detection – APTED tree edit distance with MinHash/LSH pre-filtering (Type 1–4)
- Circular dependency detection – Tarjan's Strongly Connected Components (O(V+E))
- Cyclomatic complexity – McCabe complexity including logical operators and ternaries
- CBO / Instability – Graph-based dependency metrics (Ca, Ce, Instability, Main Sequence distance)
- Health score – Weighted multi-factor scoring based on violation ratios
Parallel execution • Multiple output formats (Analyze: HTML/JSON/Text, Deps: Text/JSON/DOT) • Built with Go + tree-sitter
# Install globally with npm (recommended)
npm install -g jscanAlternative installation methods
git clone https://github.com/ludo-technologies/jscan.git
cd jscan
go build -o jscan ./cmd/jscango install github.com/ludo-technologies/jscan/cmd/jscan@latestRun comprehensive analysis with HTML report
jscan analyze src/ # All analyses with HTML report
jscan analyze --format json src/ # Generate JSON report
jscan analyze --select complexity src/ # Only complexity analysis
jscan analyze --select deadcode src/ # Only dead code analysis
jscan analyze --select complexity,deadcode,clone src/ # Multiple analysesFast CI-friendly quality gate
jscan check src/ # Quick pass/fail checkCreate configuration file
jscan init # Generate jscan.config.jsonDependency visualization
jscan deps src/ --format dot | dot -Tsvg -o deps.svg💡 Run
jscan --helporjscan <command> --helpfor complete options
Create a jscan.config.json or .jscanrc.json in your project root:
{
"complexity": {
"low_threshold": 10,
"medium_threshold": 20,
"enabled": true
},
"dead_code": {
"enabled": true,
"min_severity": "warning"
},
"output": {
"format": "text",
"show_details": true
}
}⚙️ Run
jscan initto generate a configuration file with core options
- TypeScript-specific analysis features (type-aware dead code, generic complexity)
- Vue / JSX single-file component support
- IDE / editor integrations
- Watch mode for continuous analysis
📚 Development Guide • Architecture • Testing • Contributing
For commercial support, custom integrations, or consulting services, contact us at [email protected]
MIT License — see LICENSE
Built with ❤️ using Go and tree-sitter