@mycodemap/mycodemap 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +241 -67
  3. package/dist/cli/commands/ci.d.ts +7 -1
  4. package/dist/cli/commands/ci.d.ts.map +1 -1
  5. package/dist/cli/commands/ci.js +38 -0
  6. package/dist/cli/commands/ci.js.map +1 -1
  7. package/dist/cli/commands/export.d.ts +6 -0
  8. package/dist/cli/commands/export.d.ts.map +1 -0
  9. package/dist/cli/commands/export.js +108 -0
  10. package/dist/cli/commands/export.js.map +1 -0
  11. package/dist/cli/commands/generate.d.ts.map +1 -1
  12. package/dist/cli/commands/generate.js +96 -0
  13. package/dist/cli/commands/generate.js.map +1 -1
  14. package/dist/cli/commands/server.d.ts +9 -0
  15. package/dist/cli/commands/server.d.ts.map +1 -0
  16. package/dist/cli/commands/server.js +68 -0
  17. package/dist/cli/commands/server.js.map +1 -0
  18. package/dist/cli/index.js +22 -1
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli-new/commands/export.d.ts +15 -0
  21. package/dist/cli-new/commands/export.d.ts.map +1 -0
  22. package/dist/cli-new/commands/export.js +107 -0
  23. package/dist/cli-new/commands/export.js.map +1 -0
  24. package/dist/cli-new/commands/query.d.ts +14 -0
  25. package/dist/cli-new/commands/query.d.ts.map +1 -0
  26. package/dist/cli-new/commands/query.js +120 -0
  27. package/dist/cli-new/commands/query.js.map +1 -0
  28. package/dist/cli-new/commands/server.d.ts +13 -0
  29. package/dist/cli-new/commands/server.d.ts.map +1 -0
  30. package/dist/cli-new/commands/server.js +94 -0
  31. package/dist/cli-new/commands/server.js.map +1 -0
  32. package/dist/cli-new/index.d.ts +11 -0
  33. package/dist/cli-new/index.d.ts.map +1 -0
  34. package/dist/cli-new/index.js +63 -0
  35. package/dist/cli-new/index.js.map +1 -0
  36. package/dist/cli-new/types/index.d.ts +88 -0
  37. package/dist/cli-new/types/index.d.ts.map +1 -0
  38. package/dist/cli-new/types/index.js +7 -0
  39. package/dist/cli-new/types/index.js.map +1 -0
  40. package/dist/domain/entities/CodeGraph.d.ts +134 -0
  41. package/dist/domain/entities/CodeGraph.d.ts.map +1 -0
  42. package/dist/domain/entities/CodeGraph.js +316 -0
  43. package/dist/domain/entities/CodeGraph.js.map +1 -0
  44. package/dist/domain/entities/Dependency.d.ts +78 -0
  45. package/dist/domain/entities/Dependency.d.ts.map +1 -0
  46. package/dist/domain/entities/Dependency.js +132 -0
  47. package/dist/domain/entities/Dependency.js.map +1 -0
  48. package/dist/domain/entities/Module.d.ts +75 -0
  49. package/dist/domain/entities/Module.d.ts.map +1 -0
  50. package/dist/domain/entities/Module.js +151 -0
  51. package/dist/domain/entities/Module.js.map +1 -0
  52. package/dist/domain/entities/Project.d.ts +50 -0
  53. package/dist/domain/entities/Project.d.ts.map +1 -0
  54. package/dist/domain/entities/Project.js +99 -0
  55. package/dist/domain/entities/Project.js.map +1 -0
  56. package/dist/domain/entities/Symbol.d.ts +75 -0
  57. package/dist/domain/entities/Symbol.d.ts.map +1 -0
  58. package/dist/domain/entities/Symbol.js +130 -0
  59. package/dist/domain/entities/Symbol.js.map +1 -0
  60. package/dist/domain/events/DomainEvent.d.ts +76 -0
  61. package/dist/domain/events/DomainEvent.d.ts.map +1 -0
  62. package/dist/domain/events/DomainEvent.js +153 -0
  63. package/dist/domain/events/DomainEvent.js.map +1 -0
  64. package/dist/domain/index.d.ts +10 -0
  65. package/dist/domain/index.d.ts.map +1 -0
  66. package/dist/domain/index.js +18 -0
  67. package/dist/domain/index.js.map +1 -0
  68. package/dist/domain/repositories/CodeGraphRepository.d.ts +58 -0
  69. package/dist/domain/repositories/CodeGraphRepository.d.ts.map +1 -0
  70. package/dist/domain/repositories/CodeGraphRepository.js +37 -0
  71. package/dist/domain/repositories/CodeGraphRepository.js.map +1 -0
  72. package/dist/domain/services/CodeGraphBuilder.d.ts +50 -0
  73. package/dist/domain/services/CodeGraphBuilder.d.ts.map +1 -0
  74. package/dist/domain/services/CodeGraphBuilder.js +121 -0
  75. package/dist/domain/services/CodeGraphBuilder.js.map +1 -0
  76. package/dist/infrastructure/parser/implementations/GoParser.d.ts +25 -0
  77. package/dist/infrastructure/parser/implementations/GoParser.d.ts.map +1 -0
  78. package/dist/infrastructure/parser/implementations/GoParser.js +158 -0
  79. package/dist/infrastructure/parser/implementations/GoParser.js.map +1 -0
  80. package/dist/infrastructure/parser/implementations/PythonParser.d.ts +30 -0
  81. package/dist/infrastructure/parser/implementations/PythonParser.d.ts.map +1 -0
  82. package/dist/infrastructure/parser/implementations/PythonParser.js +201 -0
  83. package/dist/infrastructure/parser/implementations/PythonParser.js.map +1 -0
  84. package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts +63 -0
  85. package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts.map +1 -0
  86. package/dist/infrastructure/parser/implementations/TypeScriptParser.js +420 -0
  87. package/dist/infrastructure/parser/implementations/TypeScriptParser.js.map +1 -0
  88. package/dist/infrastructure/parser/index.d.ts +13 -0
  89. package/dist/infrastructure/parser/index.d.ts.map +1 -0
  90. package/dist/infrastructure/parser/index.js +32 -0
  91. package/dist/infrastructure/parser/index.js.map +1 -0
  92. package/dist/infrastructure/parser/interfaces/ParserBase.d.ts +124 -0
  93. package/dist/infrastructure/parser/interfaces/ParserBase.d.ts.map +1 -0
  94. package/dist/infrastructure/parser/interfaces/ParserBase.js +200 -0
  95. package/dist/infrastructure/parser/interfaces/ParserBase.js.map +1 -0
  96. package/dist/infrastructure/parser/registry/ParserRegistry.d.ts +68 -0
  97. package/dist/infrastructure/parser/registry/ParserRegistry.d.ts.map +1 -0
  98. package/dist/infrastructure/parser/registry/ParserRegistry.js +116 -0
  99. package/dist/infrastructure/parser/registry/ParserRegistry.js.map +1 -0
  100. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts +44 -0
  101. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts.map +1 -0
  102. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js +129 -0
  103. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js.map +1 -0
  104. package/dist/infrastructure/repositories/index.d.ts +3 -0
  105. package/dist/infrastructure/repositories/index.d.ts.map +1 -0
  106. package/dist/infrastructure/repositories/index.js +7 -0
  107. package/dist/infrastructure/repositories/index.js.map +1 -0
  108. package/dist/infrastructure/storage/StorageFactory.d.ts +53 -0
  109. package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -0
  110. package/dist/infrastructure/storage/StorageFactory.js +150 -0
  111. package/dist/infrastructure/storage/StorageFactory.js.map +1 -0
  112. package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts +52 -0
  113. package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts.map +1 -0
  114. package/dist/infrastructure/storage/adapters/FileSystemStorage.js +315 -0
  115. package/dist/infrastructure/storage/adapters/FileSystemStorage.js.map +1 -0
  116. package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts +52 -0
  117. package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts.map +1 -0
  118. package/dist/infrastructure/storage/adapters/KuzuDBStorage.js +235 -0
  119. package/dist/infrastructure/storage/adapters/KuzuDBStorage.js.map +1 -0
  120. package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts +37 -0
  121. package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts.map +1 -0
  122. package/dist/infrastructure/storage/adapters/MemoryStorage.js +229 -0
  123. package/dist/infrastructure/storage/adapters/MemoryStorage.js.map +1 -0
  124. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +49 -0
  125. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
  126. package/dist/infrastructure/storage/adapters/Neo4jStorage.js +222 -0
  127. package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
  128. package/dist/infrastructure/storage/index.d.ts +6 -0
  129. package/dist/infrastructure/storage/index.d.ts.map +1 -0
  130. package/dist/infrastructure/storage/index.js +13 -0
  131. package/dist/infrastructure/storage/index.js.map +1 -0
  132. package/dist/infrastructure/storage/interfaces/StorageBase.d.ts +76 -0
  133. package/dist/infrastructure/storage/interfaces/StorageBase.d.ts.map +1 -0
  134. package/dist/infrastructure/storage/interfaces/StorageBase.js +116 -0
  135. package/dist/infrastructure/storage/interfaces/StorageBase.js.map +1 -0
  136. package/dist/interface/config/index.d.ts +102 -0
  137. package/dist/interface/config/index.d.ts.map +1 -0
  138. package/dist/interface/config/index.js +7 -0
  139. package/dist/interface/config/index.js.map +1 -0
  140. package/dist/interface/types/index.d.ts +425 -0
  141. package/dist/interface/types/index.d.ts.map +1 -0
  142. package/dist/interface/types/index.js +8 -0
  143. package/dist/interface/types/index.js.map +1 -0
  144. package/dist/interface/types/parser.d.ts +103 -0
  145. package/dist/interface/types/parser.d.ts.map +1 -0
  146. package/dist/interface/types/parser.js +7 -0
  147. package/dist/interface/types/parser.js.map +1 -0
  148. package/dist/interface/types/storage.d.ts +98 -0
  149. package/dist/interface/types/storage.d.ts.map +1 -0
  150. package/dist/interface/types/storage.js +7 -0
  151. package/dist/interface/types/storage.js.map +1 -0
  152. package/dist/orchestrator/test-linker.js +1 -1
  153. package/dist/orchestrator/test-linker.js.map +1 -1
  154. package/dist/server/CodeMapServer.d.ts +51 -0
  155. package/dist/server/CodeMapServer.d.ts.map +1 -0
  156. package/dist/server/CodeMapServer.js +146 -0
  157. package/dist/server/CodeMapServer.js.map +1 -0
  158. package/dist/server/handlers/AnalysisHandler.d.ts +82 -0
  159. package/dist/server/handlers/AnalysisHandler.d.ts.map +1 -0
  160. package/dist/server/handlers/AnalysisHandler.js +196 -0
  161. package/dist/server/handlers/AnalysisHandler.js.map +1 -0
  162. package/dist/server/handlers/QueryHandler.d.ts +57 -0
  163. package/dist/server/handlers/QueryHandler.d.ts.map +1 -0
  164. package/dist/server/handlers/QueryHandler.js +260 -0
  165. package/dist/server/handlers/QueryHandler.js.map +1 -0
  166. package/dist/server/index.d.ts +7 -0
  167. package/dist/server/index.d.ts.map +1 -0
  168. package/dist/server/index.js +13 -0
  169. package/dist/server/index.js.map +1 -0
  170. package/dist/server/routes/api.d.ts +8 -0
  171. package/dist/server/routes/api.d.ts.map +1 -0
  172. package/dist/server/routes/api.js +372 -0
  173. package/dist/server/routes/api.js.map +1 -0
  174. package/dist/server/types/index.d.ts +171 -0
  175. package/dist/server/types/index.d.ts.map +1 -0
  176. package/dist/server/types/index.js +7 -0
  177. package/dist/server/types/index.js.map +1 -0
  178. package/dist/types/index.d.ts +6 -372
  179. package/dist/types/index.d.ts.map +1 -1
  180. package/dist/types/index.js +9 -3
  181. package/dist/types/index.js.map +1 -1
  182. package/docs/AI_ASSISTANT_SETUP.md +68 -0
  183. package/docs/PUBLISHING.md +162 -0
  184. package/docs/README.md +37 -0
  185. package/docs/SETUP_GUIDE.md +91 -5
  186. package/docs/ai-guide/COMMANDS.md +369 -0
  187. package/docs/ai-guide/INTEGRATION.md +513 -0
  188. package/docs/ai-guide/OUTPUT.md +465 -0
  189. package/docs/ai-guide/PATTERNS.md +409 -0
  190. package/docs/ai-guide/PROMPTS.md +414 -0
  191. package/docs/ai-guide/QUICKSTART.md +114 -0
  192. package/docs/ai-guide/README.md +66 -0
  193. package/docs/archive/AI_INTEGRATION_GUIDE_ARCHIVED.md +7 -1
  194. package/docs/archive/ARCHIVE.md +39 -0
  195. package/docs/archive/MYCLAUDE_GUIDE.md +305 -0
  196. package/docs/archive/PUBLISH_NPM_DESIGN_V1.md +6 -0
  197. package/docs/archive/PUBLISH_NPM_DESIGN_V2.md +6 -0
  198. package/docs/archive/README.md +29 -0
  199. package/docs/archive/TASK_DESIGN_COVERAGE_REPORT.md +6 -0
  200. package/docs/archive/TEST_SUMMARY.md +140 -0
  201. package/docs/archive/comprehensive_test_report.md +337 -0
  202. package/docs/{CI_GATEWAY_DESIGN.md → archive/design-docs/CI_GATEWAY_DESIGN.md} +6 -0
  203. package/docs/{PUBLISH_NPM_DESIGN_FINAL.md → archive/design-docs/PUBLISH_NPM_DESIGN_FINAL.md} +7 -1
  204. package/docs/{REFACTOR_ARCHITECTURE_OVERVIEW.md → archive/design-docs/REFACTOR_ARCHITECTURE_OVERVIEW.md} +8 -2
  205. package/docs/{REFACTOR_CONFIDENCE_DESIGN.md → archive/design-docs/REFACTOR_CONFIDENCE_DESIGN.md} +6 -0
  206. package/docs/{REFACTOR_GIT_ANALYZER_DESIGN.md → archive/design-docs/REFACTOR_GIT_ANALYZER_DESIGN.md} +8 -2
  207. package/docs/{REFACTOR_ORCHESTRATOR_DESIGN.md → archive/design-docs/REFACTOR_ORCHESTRATOR_DESIGN.md} +6 -0
  208. package/docs/{REFACTOR_RESULT_FUSION_DESIGN.md → archive/design-docs/REFACTOR_RESULT_FUSION_DESIGN.md} +6 -0
  209. package/docs/{REFACTOR_TEST_LINKER_DESIGN.md → archive/design-docs/REFACTOR_TEST_LINKER_DESIGN.md} +6 -0
  210. package/docs/archive/myclaude.md +1084 -0
  211. package/docs/archive/plans/2026-03-14-go-language-support-design.md +92 -0
  212. package/docs/{REFACTOR_REQUIREMENTS.md → archive/product-specs/REFACTOR_REQUIREMENTS.md} +11 -5
  213. package/docs/archive/scenario-2-deps-analysis.md +353 -0
  214. package/docs/archive/test-report-symbol-search.md +384 -0
  215. package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
  216. package/docs/archive/test_report_scenario5.md +615 -0
  217. package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
  218. package/docs/design-docs/README.md +26 -0
  219. package/docs/exec-plans/MVP3-IMPLEMENTATION-ROADMAP.md +524 -0
  220. package/docs/exec-plans/README.md +29 -0
  221. package/docs/exec-plans/active/.gitkeep +0 -0
  222. package/docs/exec-plans/completed/.gitkeep +0 -0
  223. package/docs/{plans/POST_TASK_PLAN.md → exec-plans/completed/2026-03-03-post-task-plan.md} +9 -3
  224. package/docs/exec-plans/completed/harness-engineering-rollout.md +184 -0
  225. package/docs/exec-plans/tech-debt/.gitkeep +0 -0
  226. package/docs/exec-plans/tech-debt/2026-03-15-lint-guardrail-gap.md +30 -0
  227. package/docs/generated/README.md +19 -0
  228. package/docs/product-specs/MVP3-ARCHITECTURE-COMPARISON.md +504 -0
  229. package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-PRD.md +322 -0
  230. package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-TECH-PRD.md +1374 -0
  231. package/docs/product-specs/README.md +22 -0
  232. package/docs/references/README.md +15 -0
  233. package/docs/references/tmp.md +527 -0
  234. package/docs/rules/README.md +16 -0
  235. package/docs/rules/architecture-guardrails.md +349 -0
  236. package/docs/rules/code-quality-redlines.md +321 -0
  237. package/docs/rules/deployment.md +23 -0
  238. package/docs/rules/engineering-with-codex-openai.md +202 -0
  239. package/docs/rules/testing.md +73 -0
  240. package/docs/rules/validation.md +39 -0
  241. package/package.json +19 -6
  242. package/docs/OMC_TEAM_DEBUG_REPORT.md +0 -285
  243. /package/docs/{plans/archive → exec-plans/completed}/2026-03-03-deps-path-extension-fix.md +0 -0
@@ -0,0 +1,92 @@
1
+ # Go 语言支持设计文档
2
+
3
+ > 归档时间:2026-03-15
4
+ > 归档原因:迁移遗留计划文档,原位于已停用的 `docs/plans/`,且方案仍未落地。
5
+ > 当前依据:`docs/exec-plans/README.md`;如需重启,请新建到 `docs/exec-plans/active/`
6
+ > 状态:仅供历史对照,不作为当前执行依据。
7
+
8
+
9
+ **日期**: 2026-03-14
10
+ **目标**: 为 CodeMap 添加 Go 语言分析支持
11
+ **模式**: Fast + Smart(分阶段实现)
12
+
13
+ ## 1. 架构概览
14
+
15
+ ```
16
+ TreeSitterParser (扩展)
17
+ ├── 语言检测 → 根据文件扩展名 (.go / .ts / .js)
18
+ ├── 动态加载语言模块 → tree-sitter-go / tree-sitter-typescript
19
+ └── 节点提取 → 通过 AST 遍历提取 Import/Export/Symbol
20
+ ```
21
+
22
+ ## 2. 核心改动
23
+
24
+ ### 2.1 依赖更新
25
+
26
+ - 新增:`tree-sitter-go` 包
27
+
28
+ ### 2.2 TreeSitterParser 改造
29
+
30
+ ```typescript
31
+ // 构造函数中根据语言动态加载
32
+ constructor(options: ParserOptions) {
33
+ this.rootDir = options.rootDir;
34
+ this.parser = new Parser();
35
+ // 语言在 parseFile 时根据扩展名动态设置
36
+ }
37
+
38
+ // 新增语言检测方法
39
+ private detectLanguage(filePath: string): Language {
40
+ const ext = path.extname(filePath);
41
+ switch (ext) {
42
+ case '.go': return Go;
43
+ case '.ts':
44
+ case '.tsx': return TypeScript.typescript;
45
+ case '.js':
46
+ case '.jsx': return TypeScript.javascript;
47
+ }
48
+ }
49
+ ```
50
+
51
+ ### 2.3 节点类型映射(Go 特有)
52
+
53
+ | 概念 | TypeScript 节点 | Go 节点 |
54
+ |------|-----------------|---------|
55
+ | 导入 | `import_statement` | `import_declaration` |
56
+ | 导出 | `export_statement` | `exported_decl` |
57
+ | 函数 | `function_declaration` | `function_declaration` |
58
+ | 类型 | `type_alias_declaration` | `type_spec` |
59
+ | 结构体 | `class_declaration` | `struct_type` |
60
+
61
+ ### 2.4 Go 特定逻辑
62
+
63
+ - 解析 `go.mod` 提取模块名作为顶级依赖
64
+ - 测试文件识别:`_test.go` 后缀 → `type: 'test'`
65
+
66
+ ### 2.5 DefaultParserFactory 更新
67
+
68
+ ```typescript
69
+ getSupportedExtensions(): string[] {
70
+ return ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.go'];
71
+ }
72
+ ```
73
+
74
+ ## 3. 实施步骤(分阶段)
75
+
76
+ ### 第一阶段:基础支持
77
+ 1. 安装 `tree-sitter-go` 依赖
78
+ 2. 扩展 `TreeSitterParser` 支持语言动态切换
79
+ 3. 添加 Go AST 节点映射逻辑
80
+ 4. 更新 `DefaultParserFactory` 支持 `.go`
81
+ 5. 添加单元测试
82
+ 6. 验证功能
83
+
84
+ ### 第二阶段(后续迭代)
85
+ - 复用 `typhonjs-escomplex` 进行 Go 复杂度分析
86
+ - 实现调用图分析
87
+
88
+ ## 4. 风险与注意事项
89
+
90
+ - Go 的 AST 节点类型与 TypeScript 有差异,需要单独处理
91
+ - 需要确保 tree-sitter-go 版本与 tree-sitter 核心库兼容
92
+ - Go 的 import 路径解析需要考虑模块名(go.mod)的情况
@@ -1,5 +1,11 @@
1
1
  # CodeMap 编排层重构设计方案 - 需求与用户场景
2
2
 
3
+ > 归档时间:2026-03-15
4
+ > 归档原因:历史需求/规格草稿,文档状态仍为“待实施”,已不适合作为当前契约。
5
+ > 当前依据:`ARCHITECTURE.md`、`docs/rules/*`、`src/cli/index.ts`
6
+ > 状态:仅供历史对照,不作为当前执行依据。
7
+
8
+
3
9
  > 版本: 2.5
4
10
  > 日期: 2026-02-28
5
11
  > 状态: 待实施(含 CI 门禁设计)
@@ -959,11 +965,11 @@ $ codemap workflow start "实现文件重命名功能"
959
965
 
960
966
  - 评估报告: `CODEMAP_ASSESSMENT_REPORT.md`
961
967
  - 方案对比: `MULTI_TOOL_REFACTOR_OPTIONS.md`
962
- - 系统架构与功能设计: `REFACTOR_ARCHITECTURE_DESIGN.md`
963
- - Git 分析器设计: `REFACTOR_GIT_ANALYZER_DESIGN.md` (含 AI 饲料生成器)
964
- - CI 门禁设计: `CI_GATEWAY_DESIGN.md`
965
- - 结果融合设计: `REFACTOR_RESULT_FUSION_DESIGN.md`
966
- - 编排层设计: `REFACTOR_ORCHESTRATOR_DESIGN.md` (含工作流编排器 v2.5 规划)
968
+ - 系统架构与功能设计: `../design-docs/REFACTOR_ARCHITECTURE_OVERVIEW.md`
969
+ - Git 分析器设计: `../design-docs/REFACTOR_GIT_ANALYZER_DESIGN.md` (含 AI 饲料生成器)
970
+ - CI 门禁设计: `../design-docs/CI_GATEWAY_DESIGN.md`
971
+ - 结果融合设计: `../design-docs/REFACTOR_RESULT_FUSION_DESIGN.md`
972
+ - 编排层设计: `../design-docs/REFACTOR_ORCHESTRATOR_DESIGN.md` (含工作流编排器 v2.5 规划)
967
973
 
968
974
  ### B. 参考资源
969
975
 
@@ -0,0 +1,353 @@
1
+ # 测试场景 2: 模块依赖分析对比测试
2
+
3
+ **测试目标**: 对比 `codemap deps` 与手动 `grep` 分析模块依赖的差异
4
+
5
+ **测试环境**: /data/codemap 目录
6
+
7
+ ---
8
+
9
+ ## 测试 1: 查看 src/parser/index.ts 的依赖树
10
+
11
+ ### 测试目的
12
+ 对比 CodeMap 的依赖树展示能力与手动 grep 分析的效果
13
+
14
+ ### CodeMap 执行
15
+ ```bash
16
+ npx codemap deps -m "src/parser"
17
+ ```
18
+ **执行时间**: 0.658s
19
+
20
+ **输出**:
21
+ ```
22
+ 📦 模块: src/parser/index.ts
23
+ ──────────────────────────────────────────────────
24
+
25
+ ⬇️ 直接依赖 (dependencies):
26
+ • typescript [source]
27
+ • fs/promises [source]
28
+ • path [source]
29
+ • /data/codemap/src/types/index.js [source]
30
+ • /data/codemap/src/parser/interfaces/IParser.js [source]
31
+ • /data/codemap/src/parser/implementations/smart-parser.js [source]
32
+ • /data/codemap/src/parser/implementations/fast-parser.js [source]
33
+
34
+ ⬆️ 被依赖 (dependents):
35
+ • src/core/analyzer.ts
36
+ ──────────────────────────────────────────────────
37
+ 依赖数量: 7
38
+ 被依赖数量: 1
39
+ ```
40
+
41
+ ### 传统工具执行
42
+ ```bash
43
+ rg -n "import.*from" src/parser/index.ts
44
+ ```
45
+ **执行时间**: 0.003s
46
+
47
+ **输出**:
48
+ ```
49
+ 5:import ts from 'typescript';
50
+ 6:import fs from 'fs/promises';
51
+ 7:import path from 'path';
52
+ 8:import type { ModuleInfo, ImportInfo, ExportInfo, ModuleSymbol, SymbolKind, DecoratorInfo } from '../types/index.js';
53
+ 9:import type { IParser, ParserOptions, ParserMode } from './interfaces/IParser.js';
54
+ 10:import { SmartParser } from './implementations/smart-parser.js';
55
+ 11:import { FastParser } from './implementations/fast-parser.js';
56
+ ```
57
+
58
+ ### 对比分析
59
+
60
+ | 维度 | CodeMap | 传统工具 (rg) | 结论 |
61
+ |------|---------|---------------|------|
62
+ | 速度 | 0.658s | 0.003s | rg 快 ~200倍 |
63
+ | 依赖方向 | 同时显示导入(⬇️)和被导入(⬆️) | 仅显示导入语句 | CodeMap 更全面 |
64
+ | 准确性 | 显示 .js 扩展名(构建后) | 显示源代码 .ts 扩展名 | rg 更准确反映源代码 |
65
+ | 结构化 | 分类显示,带统计信息 | 原始代码行 | CodeMap 更易读 |
66
+ | 被依赖分析 | ✅ 自动识别 | ❌ 需额外查找 | CodeMap 独有功能 |
67
+
68
+ ### 发现的问题
69
+ 1. **路径扩展名不一致**: CodeMap 显示 `.js` 扩展名,而源代码使用 `.ts`,可能造成混淆
70
+ 2. **速度差距大**: CodeMap 启动开销明显高于 rg
71
+
72
+ ---
73
+
74
+ ## 测试 2: 查看 src/core/analyzer.ts 的依赖
75
+
76
+ ### 测试目的
77
+ 测试复杂模块的依赖分析能力
78
+
79
+ ### CodeMap 执行
80
+ ```bash
81
+ npx codemap deps -m "src/core/analyzer"
82
+ ```
83
+ **执行时间**: 0.575s
84
+
85
+ **输出**:
86
+ ```
87
+ 📦 模块: src/core/analyzer.ts
88
+ ──────────────────────────────────────────────────
89
+
90
+ ⬇️ 直接依赖 (dependencies):
91
+ • path [source]
92
+ • fs/promises [source]
93
+ • globby [source]
94
+ • /data/codemap/src/parser/index.js [source]
95
+ • /data/codemap/src/types/index.js [source]
96
+ • /data/codemap/src/parser/interfaces/IParser.js [source]
97
+ • /data/codemap/src/core/global-index.js [source]
98
+
99
+ ⬆️ 被依赖 (dependents):
100
+ • src/watcher/watch-worker.ts
101
+ • src/core/__tests__/analyzer.test.ts
102
+ • src/cli/__tests__/generate.test.ts
103
+ • src/cli/commands/generate.ts
104
+ • src/cli/commands/watch-foreground.ts
105
+ • src/cli/commands/__tests__/watch-foreground.test.ts
106
+ ──────────────────────────────────────────────────
107
+ 依赖数量: 7
108
+ 被依赖数量: 6
109
+ ```
110
+
111
+ ### 传统工具执行
112
+ ```bash
113
+ rg -n "import" src/core/analyzer.ts
114
+ ```
115
+ **执行时间**: 0.003s
116
+
117
+ **输出**:
118
+ ```
119
+ 1:import path from 'path';
120
+ 2:import fs from 'fs/promises';
121
+ 3:import { globby } from 'globby';
122
+ 4:import { parseFile, createParser } from '../parser/index.js';
123
+ 5:import type { CodeMap, AnalysisOptions, ModuleInfo, DependencyGraph, ProjectInfo, ProjectSummary } from '../types/index.js';
124
+ 6:import type { ParseResult } from '../parser/interfaces/IParser.js';
125
+ 7:import { createGlobalIndex, GlobalSymbolIndexBuilder } from './global-index.js';
126
+ 142: imports: result.imports,
127
+ 197: const edgeKey = `${mod.id}->${targetMod.id}:import`;
128
+ 204: type: 'import',
129
+ 259: importerPath: string,
130
+ 269: candidates.push(normalizePath(path.resolve(path.dirname(importerPath), rawDep)));
131
+ ```
132
+
133
+ ### 对比分析
134
+
135
+ | 维度 | CodeMap | 传统工具 (rg) | 结论 |
136
+ |------|---------|---------------|------|
137
+ | 速度 | 0.575s | 0.003s | rg 快 ~190倍 |
138
+ | 误报过滤 | 仅显示 import 语句 | 显示所有包含 "import" 的行 | CodeMap 更准确 |
139
+ | 被依赖识别 | ✅ 自动识别 6 个模块依赖此模块 | ❌ 无法识别 | CodeMap 独有功能 |
140
+ | 类型导入 | 不区分 type import | 显示 type 关键字 | rg 更详细 |
141
+
142
+ ### 发现的问题
143
+ 1. **rg 误报问题**: grep 匹配了所有包含 "import" 的行(包括变量名),需要更精确的 pattern
144
+ 2. **CodeMap 不区分 import 类型**: 未显示哪些是 type-only import
145
+
146
+ ---
147
+
148
+ ## 测试 3: 完整的依赖统计
149
+
150
+ ### 测试目的
151
+ 对比全局依赖统计的能力
152
+
153
+ ### CodeMap 执行
154
+ ```bash
155
+ npx codemap deps
156
+ ```
157
+ **执行时间**: 0.527s
158
+
159
+ **输出**:
160
+ ```
161
+ 📊 项目依赖分析
162
+ ──────────────────────────────────────────────────
163
+
164
+ 📦 模块依赖排名 (Top 20):
165
+ 1. src/orchestrator/workflow/workflow-orchestrator.ts
166
+ 依赖: 13, 类型: source
167
+ 2. src/cli/index.ts
168
+ 依赖: 12, 类型: source
169
+ 3. src/cli/commands/analyze.ts
170
+ 依赖: 11, 类型: source
171
+ 4. src/core/analyzer.ts
172
+ 依赖: 7, 类型: source
173
+ 5. src/parser/index.ts
174
+ 依赖: 7, 类型: source
175
+ ...
176
+ ──────────────────────────────────────────────────
177
+ 总模块数: 104
178
+ 有依赖的模块: 104
179
+ 总依赖关系: 350
180
+ ```
181
+
182
+ ### 传统工具执行
183
+ ```bash
184
+ rg -n "^import|^export" src/ --stats
185
+ ```
186
+ **执行时间**: 0.008s
187
+
188
+ **输出** (部分):
189
+ ```
190
+ # 显示所有匹配行,包含文件路径和行号
191
+ # 需要手动统计每个文件的 import 数量
192
+ # 最后给出总体统计:
193
+ 130 matches
194
+ 13 files contained matches
195
+ 52 files searched
196
+ 0 bytes printed
197
+ ```
198
+
199
+ ### 对比分析
200
+
201
+ | 维度 | CodeMap | 传统工具 (rg) | 结论 |
202
+ |------|---------|---------------|------|
203
+ | 速度 | 0.527s | 0.008s | rg 快 ~65倍 |
204
+ | 排名统计 | ✅ 自动按依赖数排名 | ❌ 需手动统计 | CodeMap 大幅领先 |
205
+ | 模块分类 | ✅ 区分 source/test | ❌ 需手动过滤 | CodeMap 更智能 |
206
+ | 总计信息 | ✅ 总模块数、依赖关系数 | ⚠️ 仅匹配数 | CodeMap 更有用 |
207
+ | 可扩展性 | JSON 输出支持 | 需管道处理 | CodeMap 更友好 |
208
+
209
+ ### JSON 输出测试
210
+ ```bash
211
+ npx codemap deps --json
212
+ ```
213
+
214
+ 输出结构化 JSON,包含每个模块的依赖数量,便于程序化处理。
215
+
216
+ ### 发现的问题
217
+ 1. **rg 统计困难**: 需要复杂的管道命令才能获得类似统计
218
+ 2. **CodeMap 缺少依赖图**: 仅显示数量排名,未展示依赖关系图
219
+
220
+ ---
221
+
222
+ ## 测试 4: 检测循环依赖
223
+
224
+ ### 测试目的
225
+ 对比循环依赖检测的能力
226
+
227
+ ### CodeMap 执行
228
+ ```bash
229
+ npx codemap cycles
230
+ ```
231
+ **执行时间**: 0.677s
232
+
233
+ **输出**:
234
+ ```
235
+ 🔄 循环依赖检测
236
+ ──────────────────────────────────────────────────
237
+
238
+ ✅ 未检测到循环依赖!
239
+ ```
240
+
241
+ ### 传统工具尝试
242
+ 手动检测循环依赖需要递归搜索每个依赖的依赖,复杂度极高:
243
+
244
+ ```bash
245
+ # 步骤 1: 获取模块的所有导入
246
+ rg -n "import.*from" src/core/analyzer.ts
247
+
248
+ # 步骤 2: 对每个导入,检查是否反向依赖
249
+ # 这需要递归执行以下命令 N 次:
250
+ rg -n "import.*from.*analyzer" src/parser/
251
+ rg -n "import.*from.*parser" src/core/
252
+ # ... 以此类推
253
+ ```
254
+
255
+ **复杂度分析**:
256
+ - 对于 N 个模块,平均每个模块 M 个依赖
257
+ - 需要执行 O(N × M) 次搜索
258
+ - 每次搜索可能需要检查多个目录
259
+ - 需要构建完整的依赖图才能检测循环
260
+
261
+ **手动尝试结果**:
262
+ ```bash
263
+ # 尝试检测 ai <-> generator 循环
264
+ rg -n "import.*from.*generator" src/ai/ # 无结果
265
+ rg -n "import.*from.*ai" src/generator/ # 发现 1 条
266
+ # 实际: generator/ai-overview.ts -> ai/subagent-caller.js (单向,非循环)
267
+ ```
268
+
269
+ ### 对比分析
270
+
271
+ | 维度 | CodeMap | 传统工具 (rg) | 结论 |
272
+ |------|---------|---------------|------|
273
+ | 循环检测 | ✅ 一键检测 | ❌ 极其困难 | CodeMap 独有优势 |
274
+ | 算法复杂度 | O(N + E) 图遍历 | O(N² × M²) 搜索 | CodeMap 专业实现 |
275
+ | 准确性 | 构建完整依赖图 | 容易遗漏 | CodeMap 可靠 |
276
+ | 速度 | 0.677s | 可能需要数分钟 | CodeMap 高效 |
277
+ | 可视化 | ✅ 清晰的检测结果 | ❌ 无 | CodeMap 更友好 |
278
+
279
+ ### 发现的问题
280
+ 1. **手动检测几乎不可行**: 对于大型项目,手动 grep 几乎无法可靠检测循环依赖
281
+ 2. **CodeMap 无循环路径展示**: 检测到循环时,应展示具体循环路径
282
+
283
+ ---
284
+
285
+ ## 综合评估
286
+
287
+ ### 速度对比汇总
288
+
289
+ | 测试项 | CodeMap | rg | 速度比 (rg/CodeMap) |
290
+ |--------|---------|-----|---------------------|
291
+ | 单模块依赖 | 0.658s | 0.003s | 219x |
292
+ | 复杂模块依赖 | 0.575s | 0.003s | 191x |
293
+ | 全局依赖统计 | 0.527s | 0.008s | 65x |
294
+ | 循环依赖检测 | 0.677s | ~分钟级 | CodeMap 独有 |
295
+
296
+ ### 核心优势对比
297
+
298
+ | 能力 | CodeMap | rg |
299
+ |------|---------|-----|
300
+ | 双向依赖分析 | ✅ | ❌ |
301
+ | 依赖排名统计 | ✅ | ❌ |
302
+ | 循环依赖检测 | ✅ | ❌ |
303
+ | 结构化输出 | ✅ | ⚠️ |
304
+ | 模块分类 | ✅ | ❌ |
305
+ | 原始代码匹配 | ⚠️ | ✅ |
306
+ | 速度 | ⚠️ | ✅ |
307
+ | 灵活性 | ⚠️ | ✅ |
308
+
309
+ ### 主要发现的问题
310
+
311
+ 1. **性能开销**: CodeMap 有显著的启动/解析开销(~0.6s),不适合频繁调用
312
+ 2. **路径显示**: 显示 `.js` 而非 `.ts` 扩展名,与源代码不一致
313
+ 3. **缺少传递依赖**: 不支持 `--depth` 选项查看传递依赖树
314
+ 4. **循环路径**: 检测到循环时未展示具体路径
315
+ 5. **Type Import**: 未区分 `import type` 和普通 `import`
316
+
317
+ ### 改进建议
318
+
319
+ 1. **性能优化**:
320
+ - 实现缓存机制,避免重复解析
321
+ - 支持守护进程模式 (daemon mode)
322
+ - 延迟加载,按需解析
323
+
324
+ 2. **功能增强**:
325
+ - 添加 `--depth` 参数支持传递依赖分析
326
+ - 循环检测显示完整路径 (A -> B -> C -> A)
327
+ - 区分 type-only import
328
+ - 生成依赖图可视化 (Mermaid/Graphviz)
329
+
330
+ 3. **输出改进**:
331
+ - 默认显示源代码路径 (.ts)
332
+ - 添加 `--build-paths` 选项显示构建路径 (.js)
333
+ - 支持更多输出格式 (CSV, HTML)
334
+
335
+ ---
336
+
337
+ ## 结论
338
+
339
+ **CodeMap** 在依赖分析的**功能完整性**上大幅领先传统工具:
340
+ - 独有的双向依赖分析
341
+ - 一键循环依赖检测
342
+ - 结构化排名统计
343
+ - 对大型项目不可或缺
344
+
345
+ **rg** 在**速度和灵活性**上保持优势:
346
+ - 适合快速查找特定模式
347
+ - 适合脚本化处理
348
+ - 无额外依赖
349
+
350
+ **推荐用法**:
351
+ - 日常开发、CI/CD 中使用 CodeMap 进行依赖分析
352
+ - 快速代码查找仍使用 rg
353
+ - 两者结合,发挥各自优势