- scanner.ts: 添加 DELETE 清空旧数据语句,避免重复插入 - ts-scanner: 改用 regex 替代 ts-morph 解析(避免解析失败) - go-scanner/py-scanner/proto-scanner: 完善实现
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
#!/usr/bin/env tsx
|
|
import { createDb } from "./schema.js";
|
|
import { scanTypeScript } from "./scanners/ts-scanner.js";
|
|
import { scanGo } from "./scanners/go-scanner.js";
|
|
import { scanPython } from "./scanners/py-scanner.js";
|
|
import { scanProtobuf } from "./scanners/proto-scanner.js";
|
|
import path from "node:path";
|
|
|
|
const ROOT = process.cwd();
|
|
|
|
function main(): void {
|
|
const db = createDb(path.join(ROOT, "arch.db"));
|
|
|
|
// 清空旧数据(避免重跑产生重复符号)
|
|
db.exec(
|
|
"DELETE FROM calls; DELETE FROM dependencies; DELETE FROM symbols; DELETE FROM contracts; DELETE FROM events; DELETE FROM modules;",
|
|
);
|
|
|
|
console.log("🔍 arch-scan: 开始多语言扫描...");
|
|
|
|
// 串行扫描(并行会导致 FOREIGN KEY 错误)
|
|
const tsStats = scanTypeScript(db, ROOT);
|
|
console.log(` TypeScript: ${tsStats.modules} 模块, ${tsStats.symbols} 符号`);
|
|
|
|
const goStats = scanGo(db, ROOT);
|
|
console.log(` Go: ${goStats.modules} 模块, ${goStats.symbols} 符号`);
|
|
|
|
const pyStats = scanPython(db, ROOT);
|
|
console.log(` Python: ${pyStats.modules} 模块, ${pyStats.symbols} 符号`);
|
|
|
|
const protoStats = scanProtobuf(db, ROOT);
|
|
console.log(` Protobuf: ${protoStats.contracts} 契约`);
|
|
|
|
console.log("✅ arch-scan 完成");
|
|
db.close();
|
|
}
|
|
|
|
main();
|