159 lines
3.9 KiB
Markdown
159 lines
3.9 KiB
Markdown
## Dependency Analysis
|
|
|
|
프로젝트의 의존관계를 분석하고 아키텍처 건전성을 평가합니다.
|
|
|
|
### 사용법
|
|
|
|
```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. **지표 추적**: 의존관계 복잡도를 시계열로 모니터링
|