ArchitectVS7/code-mycelium
GitHub: ArchitectVS7/code-mycelium
一个通过语义相似度分析揭示代码库隐藏关联的工具,支持重复代码检测、Hub 节点发现和死代码定位。
Stars: 0 | Forks: 0
# 🍄 Code Mycelium
[](https://github.com/ArchitectVS7/code-mycelium/blob/master/LICENSE)
[](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, 代码复用, 代码相似度检测, 代码耦合度分析, 代码聚类, 依赖分析, 域环境探测, 威胁情报, 开发者工具, 开源项目, 技术债务, 数据可视化, 数据管道, 自定义脚本, 软件工程, 软件架构可视化, 错误基检测, 静态代码分析