Comprehensive code analysis for duplicate detection, dead code elimination, and structure optimization
An AI-friendly code analysis platform that detects duplicate code, identifies dead code, and suggests structural improvements.
npm install
# Run all analyses
node src/cli.js analyze ./src
# Run specific analysis
node src/cli.js analyze ./src --analyses dedup,deadCode
# Generate JSON report for AI processing
node src/cli.js analyze ./src --format json --output report.json
import { analyzeCode, checkDuplicates, checkDeadCode, checkStructure } from './index.js';
// Comprehensive analysis
const result = await analyzeCode('./src', {
analyses: ['dedup', 'deadCode', 'structure'],
format: 'json'
});
console.log(result.summary);
// { status: 'success', filesAnalyzed: 42, issuesFound: 15, durationMs: 234 }
// Individual checks
const duplicates = await checkDuplicates('./src', {
minSimilarity: 0.85
});
const deadCode = await checkDeadCode('./src', {
ignoreExports: true,
ignoreTestFiles: true
});
const structure = await checkStructure('./src', {
maxComplexity: 10,
maxFunctionLength: 50
});
{
"summary": {
"status": "success",
"filesAnalyzed": 42,
"issuesFound": 15,
"durationMs": 234
},
"results": {
"duplicates": [
{
"file1": "src/auth.js",
"file2": "src/user.js",
"similarity": 0.92,
"type": "approximate",
"lines": 45
}
],
"deadCode": [
{
"symbol": "unusedFunction",
"file": "src/utils.js",
"line": 23,
"type": "function"
}
],
"structure": {
"complexFunctions": [
{
"name": "processData",
"file": "src/api.js",
"complexity": 15,
"line": 45
}
]
}
},
"recommendations": [
{
"type": "refactor",
"priority": "high",
"description": "Extract duplicate validation logic",
"files": ["src/auth.js", "src/user.js"]
}
]
}
minLines: Minimum lines for duplicate detection (default: 5)minSimilarity: Similarity threshold 0-1 (default: 0.85)ignoreWhitespace: Ignore whitespace differences (default: true)ignoreComments: Ignore comments (default: true)ignoreExports: Ignore exported symbols (default: true)ignoreTestFiles: Ignore test files (default: true)testPatterns: Custom test file patterns (default: ['/*.test.js', '/*.spec.js'])whitelistPatterns: Symbol patterns to ignore (default: [])maxComplexity: Max cyclomatic complexity (default: 10)maxFunctionLength: Max function lines (default: 50)maxParameters: Max function parameters (default: 5)maxNestingDepth: Max nesting depth (default: 4)# Analyze with custom options
node src/cli.js analyze ./src \
--min-similarity 0.9 \
--max-complexity 8 \
--format json \
--output report.json
# Quick duplicate check
node src/cli.js check-dup ./src
# Quick dead code check
node src/cli.js check-dead ./src
# Quick structure check
node src/cli.js check-struct ./src
# Format code
node src/cli.js format ./src --output formatted.md
Uses MinHash LSH algorithm for fast approximate duplicate detection:
Static analysis to find unused code:
Code complexity and maintainability analysis:
| Project Size | Files | Duration |
|---|---|---|
| Small | <100 | <2s |
| Medium | 100-1K | <10s |
| Large | >1K | <30s |
const duplicates = await checkDuplicates('./src', {
minSimilarity: 0.95 // Only near-duplicates
});
duplicates.forEach(dup => {
console.log(`${dup.file1} ↔ ${dup.file2}: ${dup.similarity * 100}%`);
});
const deadCode = await checkDeadCode('./src', {
ignoreExports: false // Include exports in analysis
});
const unusedExports = deadCode.filter(item => item.exported);
console.log(`Found ${unusedExports.length} unused exports`);
const structure = await checkStructure('./src', {
maxComplexity: 8,
maxFunctionLength: 30
});
const violations = structure.complexFunctions.filter(
fn => fn.complexity > 8 || fn.length > 30
);
if (violations.length > 0) {
console.error('Complexity violations found:', violations);
process.exit(1);
}
# .github/workflows/code-quality.yml
- name: Check code quality
run: |
node src/cli.js analyze ./src --format json --output report.json
if [ $(jq '.issuesFound' report.json) -gt 0 ]; then
echo "Code quality issues found"
exit 1
fi
// package.json
{
"husky": {
"hooks": {
"pre-commit": "node src/cli.js analyze ./src --format json"
}
}
}