159 lines
3.5 KiB
Markdown
159 lines
3.5 KiB
Markdown
## 依赖关系分析
|
|
|
|
分析项目的依赖关系,评估架构的健康状况。
|
|
|
|
### 使用方法
|
|
|
|
```bash
|
|
/dependency-analysis [选项]
|
|
```
|
|
|
|
### 选项
|
|
|
|
- `--visual` : 可视化显示依赖关系
|
|
- `--circular` : 仅检测循环依赖
|
|
- `--depth <数值>` : 指定分析深度 (默认: 3)
|
|
- `--focus <路径>` : 聚焦于特定模块/目录
|
|
|
|
### 基本示例
|
|
|
|
```bash
|
|
# 整个项目的依赖关系分析
|
|
/dependency-analysis
|
|
|
|
# 检测循环依赖
|
|
/dependency-analysis --circular
|
|
|
|
# 特定模块的详细分析
|
|
/dependency-analysis --focus src/core --depth 5
|
|
```
|
|
|
|
### 分析项目
|
|
|
|
#### 1. 依赖关系矩阵
|
|
|
|
数值化显示模块间的依赖关系:
|
|
|
|
- 直接依赖
|
|
- 间接依赖
|
|
- 依赖深度
|
|
- 扇入/扇出
|
|
|
|
#### 2. 架构违规检测
|
|
|
|
- 层级违规 (下层依赖上层)
|
|
- 循环依赖
|
|
- 过度耦合 (高依赖度)
|
|
- 孤立模块
|
|
|
|
#### 3. Clean Architecture 合规性检查
|
|
|
|
- 领域层的独立性
|
|
- 基础设施层的适当分离
|
|
- 用例层的依赖方向
|
|
- 接口的应用情况
|
|
|
|
### 输出示例
|
|
|
|
```text
|
|
依赖关系分析报告
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
📊 指标概览
|
|
├─ 模块总数: 42
|
|
├─ 平均依赖数: 3.2
|
|
├─ 最大依赖深度: 5
|
|
└─ 循环依赖: 检测到 2 个
|
|
|
|
⚠️ 架构违规
|
|
├─ [HIGH] src/domain/user.js → src/infra/database.js
|
|
│ └─ 领域层直接依赖基础设施层
|
|
├─ [MED] src/api/auth.js ⟲ src/services/user.js
|
|
│ └─ 检测到循环依赖
|
|
└─ [LOW] src/utils/helper.js → 12 modules
|
|
└─ 扇出过度
|
|
|
|
✅ 建议操作
|
|
1. 引入 UserRepository 接口
|
|
2. 重新设计认证服务的职责
|
|
3. 按功能拆分辅助函数
|
|
|
|
📈 依赖关系图
|
|
[用 ASCII 艺术显示可视化依赖关系图]
|
|
```
|
|
|
|
### 高级用法
|
|
|
|
```bash
|
|
# CI/CD 管道中的自动检查
|
|
/dependency-analysis --circular --fail-on-violation
|
|
|
|
# 定义和验证架构规则
|
|
/dependency-analysis --rules .architecture-rules.yml
|
|
|
|
# 追踪依赖关系的时间变化
|
|
/dependency-analysis --compare HEAD~10
|
|
```
|
|
|
|
### 配置文件示例 (.dependency-analysis.yml)
|
|
|
|
```yaml
|
|
rules:
|
|
- name: "Domain Independence"
|
|
source: "src/domain/**"
|
|
forbidden: ["src/infra/**", "src/api/**"]
|
|
|
|
- name: "API Layer Dependencies"
|
|
source: "src/api/**"
|
|
allowed: ["src/domain/**", "src/application/**"]
|
|
forbidden: ["src/infra/**"]
|
|
|
|
thresholds:
|
|
max_dependencies: 8
|
|
max_depth: 4
|
|
coupling_threshold: 0.7
|
|
|
|
ignore:
|
|
- "**/test/**"
|
|
- "**/mocks/**"
|
|
```
|
|
|
|
### 集成工具
|
|
|
|
- `madge` : JavaScript/TypeScript 依赖关系可视化
|
|
- `dep-cruiser` : 依赖关系规则验证
|
|
- `nx` : 单体仓库依赖关系管理
|
|
- `plato` : 复杂度与依赖关系综合分析
|
|
|
|
### 与 Claude 的协作
|
|
|
|
```bash
|
|
# 包含 package.json 的分析
|
|
cat package.json
|
|
/analyze-dependencies
|
|
"分析这个项目的依赖关系问题"
|
|
|
|
# 结合特定模块的源代码
|
|
ls -la src/core/
|
|
/analyze-dependencies --focus src/core
|
|
"详细评估核心模块的依赖关系"
|
|
|
|
# 与架构文档对比
|
|
cat docs/architecture.md
|
|
/analyze-dependencies --visual
|
|
"确认设计文档与实现的差异"
|
|
```
|
|
|
|
### 注意事项
|
|
|
|
- **前提条件**: 需要在项目根目录执行
|
|
- **限制事项**: 大型项目的分析可能需要较长时间
|
|
- **建议事项**: 发现循环依赖时应立即考虑处理
|
|
|
|
### 最佳实践
|
|
|
|
1. **定期分析**: 每周检查依赖关系的健康状况
|
|
2. **规则明文化**: 通过配置文件管理架构规则
|
|
3. **渐进式改进**: 避免大规模重构,逐步改进
|
|
4. **指标追踪**: 监控依赖关系复杂度的时间序列
|