Logocob

cob diff

Feature 구현 비교 분석

cob diff#

프로젝트 간 feature 구현 차이를 분석하는 diff 검출 엔진입니다. 파일 구조, Repository 인터페이스 호환성, 구현 품질을 비교하고 Markdown 리포트를 생성합니다.

cob diff --project-a <path> [--project-b <path>] (--feature <name> | --all-features) [options]

옵션#

옵션약어설명기본값
--project-a -a Project A 루트 디렉토리 (단일 분석 모드에서는 분석 대상) 필수
--project-b -b Project B 루트 디렉토리 (지정 시 비교 모드) -
--feature -f 비교할 feature 이름 (예: auth, home) -
--all-features-모든 feature 일괄 비교false
--full-analysis - 품질 분석 포함 (repository mixin 파일 필요) false
--output -o 리포트 출력 디렉토리 claudedocs

--feature--all-features 중 하나는 반드시 지정해야 합니다.

두 가지 모드#

모드조건비교 대상
단일 프로젝트 분석--project-b 미지정템플릿 프로젝트 vs 기존 bricks
비교 모드--project-b 지정Project A vs Project B

단일 프로젝트 모드 (template vs bricks)#

--project-a만 지정하면 템플릿 프로젝트를 기존 bricks와 비교합니다. bricks/ 디렉토리는 프로젝트에서 상위 방향으로 자동 탐색하며, feature는 bricks/app/__brick__/feature/{name}/과 비교됩니다.

# 템플릿 프로젝트와 bricks 비교
cob diff --project-a template/good-teacher --feature auth

# 품질 분석 포함
cob diff --project-a template/good-teacher --feature auth --full-analysis

# 모든 feature를 bricks와 비교
cob diff --project-a template/good-teacher --all-features

feature가 bricks에 아직 없으면 베이스라인 리포트({feature}-baseline-report.md)를 생성하고 sync 명령 실행을 권장합니다.

비교 모드 (두 프로젝트)#

# 두 프로젝트의 feature 비교
cob diff \
  --project-a template/good-teacher \
  --project-b template/blueprint \
  --feature auth

# 모든 feature + 요약 리포트 + 품질 분석
cob diff \
  --project-a template/good-teacher \
  --project-b template/blueprint \
  --all-features \
  --full-analysis \
  --output claudedocs/diff-reports

분석 컴포넌트#

컴포넌트실행 조건분석 내용
FeatureDiffer (구조 diff) 항상 feature 디렉토리 파일 구조 비교 — 공통/A 전용/B 전용 파일 식별, 레이어(domain/data/presentation)별 필터링
InterfaceAnalyzer (인터페이스 분석) 공통 data/repository/*_repository.dart 존재 시 (impl 제외) AST 기반 Repository 인터페이스 메서드 시그니처 비교 — 시그니처 충돌(같은 메서드, 다른 반환 타입/파라미터), 한쪽에만 있는 메서드 검출
QualityAnalyzer (품질 분석) --full-analysis + 공통 data/repository/*_mixin.dart 존재 시 에러 처리 품질(try-catch, 구체적 예외 타입), 캐싱 전략, 로깅 커버리지, 코드 복잡도 — 권장 구현 제시
DiffReporter (리포트 생성) 항상 Markdown 리포트 생성 — 요약, 섹션별 상세 분석, sync/merge 권장사항

해당 파일이 없으면 각 분석은 건너뛰며(No repository interfaces found 등), 리포트에는 미분석으로 표기됩니다.

리포트 위치#

리포트경로생성 조건
개별 feature 리포트{output}/{feature}-diff-report.mdfeature별로 항상
요약 리포트 {output}/features-summary.md --all-features
베이스라인 리포트 {output}/{feature}-baseline-report.md 단일 모드에서 feature가 bricks에 없을 때

기본 출력 디렉토리는 claudedocs/이며 --output으로 변경할 수 있습니다.

사용 사례#

모드사례
단일 프로젝트 sync 전 템플릿 변경 검증, 신규 feature 검출(베이스라인 생성), 템플릿-bricks 드리프트 감지, 브릭 패턴 대비 품질 개선
비교 모드 openapi vs serverpod 등 구현 방식 비교 학습, 프로젝트 간 이식 대상 feature 식별, 베스트 프랙티스 판별, 병합 전 충돌 분석

종료 코드#

코드조건
0 (success)분석 완료
64 (usage)--feature/--all-features 둘 다 미지정
66 (noInput)Project A 또는 B 디렉토리가 존재하지 않음
70 (software)분석 중 예기치 못한 오류