Skip to content

Commit 444b7cd

Browse files
authored
feat(scanner): Multi-language repository scanner with 94.47% test coverage (#13)
* feat(scanner): implement multi-language scanner with TypeScript and Markdown support - Add scanner type definitions and interfaces - Implement TypeScriptScanner using ts-morph for deep AST analysis - Implement MarkdownScanner using remark for documentation - Create ScannerRegistry for managing multiple language scanners - Add comprehensive tests (all passing) - Fix pre-commit hook to use correct Biome syntax Features: - TypeScript: extracts functions, classes, methods, interfaces with type info - Markdown: extracts documentation sections with headings - Pluggable architecture: easy to add more language scanners - Tested on dev-agent codebase itself Issue: #3 * test(scanner): improve test coverage to 94.47% and add comprehensive exclusions Coverage improvements: - Overall scanner package: 88.02% → 94.47% (+6.45%) - Registry: 68.42% → 100% (+31.58% - perfect coverage!) - Tests: 8 → 24 tests (tripled) New test coverage: - Scanner error handling and recovery - Language-specific scanner retrieval - Auto glob pattern building - Default exclusions verification - Mixed language repositories - Method extraction from classes - Case-insensitive file extensions Best practice exclusions (industry standards): - Dependencies: node_modules, vendor, bower_components, third_party - Build artifacts: dist, build, out, target, .next, .turbo - Version control: .git, .svn, .hg - IDE/Editor: .vscode, .idea, .vs, .fleet - Caches: .cache, .parcel-cache, .eslintcache - Test coverage: coverage, .nyc_output - Lock files: package-lock.json, yarn.lock, pnpm-lock.yaml - Analysis/reports: analysis-reports, .research, benchmarks - Test fixtures: __fixtures__, __snapshots__ Improvements: - Case-insensitive file extension handling - Comprehensive default exclusion patterns - Better error handling documentation
1 parent 3486736 commit 444b7cd

36 files changed

+2183
-301
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ out
1313
# TypeScript
1414
*.tsbuildinfo
1515

16+
# Build artifacts in src (should only be in dist/)
17+
packages/*/src/**/*.js
18+
packages/*/src/**/*.d.ts
19+
packages/*/src/**/*.map
20+
!packages/*/src/**/*.test.js
21+
!packages/*/src/**/*.spec.js
22+
1623
# Testing
1724
coverage
1825

.husky/pre-commit

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1+
#!/usr/bin/env sh
2+
. "$(dirname -- "$0")/_/husky.sh"
3+
14
# Get staged files
2-
files=$(git diff --cached --name-only --diff-filter=ACMR "*.ts" "*.tsx" "*.js" "*.jsx" | xargs)
5+
files=$(git diff --cached --name-only --diff-filter=ACMR "*.ts" "*.tsx" "*.js" "*.jsx")
36

47
if [ -n "$files" ]; then
5-
echo "Running Biome on staged files: $files"
6-
pnpm lint-staged $files
7-
git add $files
8+
echo "Running Biome on staged files..."
9+
echo "$files" | xargs pnpm lint-staged
10+
11+
# Re-add files after formatting
12+
echo "$files" | xargs git add
813
fi
914

1015
# Run TypeScript type check
11-
pnpm typecheck
16+
echo "Running type check..."
17+
pnpm typecheck

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"format": "turbo format",
1616
"typecheck": "turbo typecheck",
1717
"prepare": "husky",
18-
"lint-staged": "biome check --write --no-errors-on-unmatched --files",
18+
"lint-staged": "biome check --write --no-errors-on-unmatched",
1919
"changeset": "changeset",
2020
"version": "changeset version",
2121
"release": "pnpm build && changeset publish"

packages/core/package.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@
2222
"test:watch": "vitest"
2323
},
2424
"devDependencies": {
25+
"@types/mdast": "^4.0.4",
26+
"@types/node": "^24.10.1",
2527
"typescript": "^5.3.3"
28+
},
29+
"dependencies": {
30+
"globby": "^16.0.0",
31+
"remark": "^15.0.1",
32+
"remark-parse": "^11.0.0",
33+
"remark-stringify": "^11.0.0",
34+
"ts-morph": "^27.0.2",
35+
"unified": "^11.0.5"
2636
}
2737
}

packages/core/src/api/index.d.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.

packages/core/src/api/index.d.ts.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/core/src/api/index.js

Lines changed: 0 additions & 20 deletions
This file was deleted.

packages/core/src/api/index.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/core/src/context/index.d.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

packages/core/src/context/index.d.ts.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)