검증과 게이트Review gates

cross-project-duplicate-file-audit

이미 출시한 여러 프로젝트에서 프로젝트별 게이트가 못 보는 결함을 찾는 도구입니다. 똑같은 파일이 여러 곳에 있는지 봅니다.

GitHub에서 보기View on GitHub

어떤 문제를 푸나The problem

게이트는 한 번에 한 프로젝트만 봅니다. 하나의 템플릿에서 복사된 버그는 각 프로젝트의 게이트를 모두 통과하고도 전부에 출시됩니다. 뒤를 돌아 전체를 한 번에 훑으면 그 공통 결함이 한 번에 드러납니다.

프로젝트 폴더들을 훑어 같은 이름과 같은 해시를 가진 파일이 여러 프로젝트에 퍼져 있는지, 템플릿 때문에 글자가 흩어진 줄이 있는지, 두 설명이 거의 같은지를 확인합니다.

이런 분께 맞습니다Who it is for

같은 템플릿에서 여러 앱이나 사이트를 만들어 내는 팀, 출시 뒤에 공통 버그를 찾고 싶은 사람.

무엇을 하나What it does

  • dupes는 이름과 md5가 같은 파일이 --min-projects 이상 프로젝트에 퍼져 있으면 목록으로 보여 줍니다.
  • charsplit는 'i; P; h; o; n; e'처럼 템플릿 오류로 글자가 쪼개진 줄을 찾습니다.
  • overlap은 두 설명문이 거의 같은지(단어 묶음의 4분의 1 이상 공유)를 판정합니다.
  • 확장자 필터(--ext)로 검사 대상을 줄일 수 있습니다.

직접 돌려 본 출력Real output

저장소의 examples 폴더를 실행한 결과입니다.

$ bash examples/demo.sh
# Four shipped apps were generated from one template. Which file is byte-identical in all of them?
$ python3 scripts/fleet_audit.py dupes .demo-tmp --min-projects 3 --ext .swift
RewardedAd.swift  md5=0788686b  identical in 4/4 projects: app1, app2, app3, app4
review each: one shared file means one shared bug (or a missing abstraction)
[exit 1]

# Review notes whose characters were split apart by a bad template (line 2):
$ python3 scripts/fleet_audit.py charsplit .demo-tmp/notes.txt
.demo-tmp/notes.txt:2: looks character-split: '2. i; P; h; o; n; e; ; S; E; 1; 5'
1 suspicious line(s)
[exit 1]

알아둘 한계Limits

  • 이름과 내용이 완전히 같은 파일만 찾습니다. 조금 고친 비슷한 코드는 찾지 못합니다.

받아서 쓰기Get it

# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/cross-project-duplicate-file-audit.git

# Claude Code 스킬로 쓰려면 이 폴더 이름으로 받습니다
git clone https://github.com/Kein-chronicle/cross-project-duplicate-file-audit.git ~/.claude/skills/reverse-audit-shipped

정보Info

분류Category
검증과 게이트Review gates
형태Type
명령줄 도구Command-line tool
라이선스License
MIT
필요한 것Requires
Python 3.10 이상
저장소Repository
cross-project-duplicate-file-audit
토픽Topics
audit code-quality duplicate-detection claude-code claude-skills agent-skills release-management

2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.

공유하기Share

문자Message 네이버 블로그Naver Blog X Facebook