ArchitectVS7/code-mycelium

GitHub: ArchitectVS7/code-mycelium

一个通过语义相似度分析揭示代码库隐藏关联的工具,支持重复代码检测、Hub 节点发现和死代码定位。

Stars: 0 | Forks: 0

# 🍄 Code Mycelium [![GitHub](https://img.shields.io/github/license/ArchitectVS7/code-mycelium)](https://github.com/ArchitectVS7/code-mycelium/blob/master/LICENSE) [![GitHub stars](https://img.shields.io/github/stars/ArchitectVS7/code-mycelium)](https://github.com/ArchitectVS7/code-mycelium) **像森林中的菌丝网络一样,揭示代码库中隐藏的关联。** ## 概念 传统代码分析向你展示: - 文件结构(排列成行的树木) - 显式导入(可见的路径) - 调用图(谁调用了谁) **Code Mycelium 揭示:** - **语义相似性**(解决相似问题的函数,潜在的 DRY 违规) - **耦合风险**(当你修改 X 时,什么会崩溃?) - **涌现架构**(代码的实际组织方式 vs 文档) - **Hub 节点**(过度中心化的代码) - **孤立代码**(未使用/不可达的函数) - **集群**(有机形成的模块) ## 安装 ``` cd code-mycelium npm install chmod +x src/cli.js ``` ## 用法 ### 分析代码库 ``` node src/cli.js analyze /path/to/codebase ``` ### 保存图数据 ``` node src/cli.js analyze /path/to/codebase --output graph.json ``` ### 运行演示 ``` npm run demo ``` ## 示例输出 ``` ═══════════════════════════════════════ 🍄 CODE MYCELIUM NETWORK ═══════════════════════════════════════ 📊 Network Stats: Nodes: 19 Connections: 23 🔥 Hub Nodes (highly connected): └─ formatDate (examples/sample-codebase/utils/helpers.js) 3 connections └─ authenticateUser (examples/sample-codebase/auth/login.js) 3 connections 🔗 Semantic Clusters (similar code): ┌─ examples/sample-codebase/api/posts.js ↔ examples/sample-codebase/api/users.js │ fetchPostsFromDatabase ↔ fetchFromDatabase │ Similarity: 85.3% │ ⚠️ Potential DRY violation detected! 👻 Orphaned Code (no connections): └─ legacyLogin (examples/sample-codebase/legacy/oldAuth.js:6) ⚠️ These may be unused or entry points ═══════════════════════════════════════ ``` ## 工作原理 ### 1. AST 解析 使用 Babel 解析器提取: - 函数 - 类 - 方法 - 导入 ### 2. 连接构建 **显式连接:** - 同文件关系 - 导入/导出链(未来) - 函数调用(未来) **语义连接:** - 词频向量嵌入 - 余弦相似度匹配(阈值:0.7) - 检测概念上相似的代码 ### 3. 模式检测 **Hub 节点:** 高度连接的代码(潜在的过度中心化) **集群:** 跨不同文件的语义相似代码组 **孤立节点:** 无连接的代码(未使用或入口点) ## 路线图 ### 第一阶段:✅ 概念验证(已完成) - [x] AST 解析(JavaScript/TypeScript) - [x] 显式连接(同文件) - [x] 语义相似性(简单嵌入) - [x] 终端可视化 - [x] Hub/集群/孤立节点检测 ### 第二阶段:语义层(下一步) - [ ] LLM 嵌入 - [ ] 调用图分析 - [ ] 导入链追踪 - [ ] 高级聚类算法 ### 第三阶段:耦合分析 - [ ] Git 历史分析(哪些内容一起变更?) - [ ] 变更影响预测 - [ ] 风险评分 ### 第四阶段:可视化 - [ ] 基于 Web 的交互式图表(D3.js) - [ ] Cyberscape 六边形网格渲染器 - [ ] 导出为 SVG/PNG ### 第五阶段:智能化 - [ ] 自动化重构建议 - [ ] 架构偏移检测 - [ ] 代码审查洞察 ## 技术栈 - **解析器:** Babel (@babel/parser, @babel/traverse) - **图:** 自定义 Map/Set 结构 - **嵌入:** 简单词频向量(第一阶段) - **CLI:** Commander.js + Chalk - **未来:** OpenAI 嵌入,D3.js 可视化 ## 使用案例 ### 1. 重构风险评估 “如果我修改这个函数,还有什么会崩溃?” ### 2. DRY 违规检测 “这段代码在某个地方重复了吗?” → 发现 85% 的语义匹配 ### 3. 架构审计 “*实际*的架构是什么?” → 涌现的集群揭示了有机结构 ### 4. 死代码识别 “我们可以安全地删除这个吗?” → 孤立节点是移除的候选对象 ### 5. 入职引导 向新开发人员展示代码库的无形结构 ## 理念 **传统工具:** 代码是静态文本,我们分析结构 **Code Mycelium:** 代码是一个活的网络,我们揭示连接 **最好的洞察不是写出来的——而是在你现有代码库的潜在结构中被发现的。** ## 示例:检测到的模式 ### DRY 违规 ``` // api/posts.js async function fetchPostsFromDatabase(query) { return { id: query.id || 1, title: 'Sample', ... }; } // api/users.js async function fetchFromDatabase(table, query) { return { id: query.id || 1, username: 'test', ... }; } ``` **Mycelium 检测到:** 85.3% 相似度 → 建议提取为共享 helper ### Hub 节点(过度中心化) ``` utils/api.js::fetchData (23 connections) ``` **警告:** 此函数被 23 处调用。考虑拆分职责。 ### 孤立代码 ``` // legacy/oldAuth.js function legacyLogin(username, password) { // No connections detected } ``` **建议:** 这似乎未被使用。请验证并考虑移除。 ## 许可证 MIT 由 LG2 / VS7 构建,作为 Code Mycelium 研究项目的一部分。 **状态:** 第一阶段原型已完成 ✅
标签:AST抽象语法树, DNS解析, DRY原则违规检测, MITM代理, Node.js开发, WebSocket, 代码复用, 代码相似度检测, 代码耦合度分析, 代码聚类, 依赖分析, 域环境探测, 威胁情报, 开发者工具, 开源项目, 技术债务, 数据可视化, 数据管道, 自定义脚本, 软件工程, 软件架构可视化, 错误基检测, 静态代码分析