fakegreen은 Git diff에서 테스트 생략·삭제, 단언 약화, CI 오류 무시 같은 변경을 찾아내는 오픈소스 도구다. Node.js 18 이상과 git이 필요하며, LLM·API 키·런타임 의존성 없이 로컬, 사전 커밋 훅, CI에서 실행할 수 있다. 제작자는 보통 100ms 이내에 끝난다고 설명한다.
GitHub 저장소에서 npx fakegreen으로 설치 없이 실행할 수 있고, 프로젝트에 고정하려면 npm i -D fakegreen을 사용한다. 기본 실행은 HEAD와 비교해 스테이징·미커밋 변경 및 추적되지 않는 파일을 검사한다. --staged, --base origin/main, --last-commit, --commit <sha>로 검사 범위를 지정하거나, --json, --sarif, --format github으로 결과 형식을 바꿀 수 있다.
fakegreen은 diff에서 추가·삭제된 행을 대상으로 규칙 기반 검사를 한다. .skip이나 테스트 파일 삭제, 약해진 단언, @ts-ignore, 테스트 환경에서만 동작을 바꾸는 코드, || true 같은 CI 실패 무시를 탐지한다. 지원 대상은 JavaScript/TypeScript, Python, Go, Rust, Java와 Kotlin 테스트 어노테이션이며, 여러 CI·설정 파일도 검사한다. 기본적으로 high 심각도부터 종료 코드 1로 실패 처리하며, --fail-on으로 기준을 조정할 수 있다. 종료 코드 0은 기준 미만이거나 문제가 없는 경우, 2는 사용법 또는 git 오류를 뜻한다.
데모 자료와 GIF, 이미지는 샘플 저장소에서 실행한 사례다. 제작자가 제시한 예시에서는 테스트 생략, 단언 약화, 테스트 파일 삭제, @ts-ignore, 테스트 환경 분기, CI 명령의 || true를 찾아냈다. 예시 저장소는 스크립트로 만들 수 있다.
Claude Code, Codex, Gemini CLI에서는 에이전트 작업 종료 시 검사하고 발견 사항이 있으면 중단시키는 훅을 설치할 수 있다. 설치 프로그램은 설정 변경 내용을 보여주고 쓰기 전에 확인을 요청한다. Codex는 프로젝트 훅을 사용하려면 해당 .codex/ 계층을 신뢰해야 하며, Cursor와 Aider에는 fakegreen이 겨냥한 차단형 종료 훅이 없다. 이 경우 사전 커밋 훅이나 CI를 쓰거나 직접 검사할 수 있다. Aider는 기본적으로 git 훅을 건너뛰므로 --git-commit-verify를 켜거나 커밋 후 검사해야 한다.
사전 커밋 훅, GitHub Actions 워크플로, 에이전트용 지침도 제공한다. GitHub Actions에서는 PR 주석으로 발견 사항을 표시한다. 설정 파일에서 규칙별 심각도와 제외 경로, 테스트 파일 패턴, 실패 기준을 조정할 수 있고, 의도적인 변경은 fakegreen-ignore 주석으로 예외 처리할 수 있다. 예외 주석 자체도 낮은 심각도의 발견 사항으로 보고된다.
제작자는 사람이 관리하는 저장소 12곳의 최근 커밋 1,200건을 살핀 도그푸드 실행에서 높은 심각도 발견 사항 34건을 확인했다고 밝혔다. 대부분은 되돌리기나 기능 제거에 따른 실제 테스트 삭제였다고 설명한다. 다만 이 도구는 AST를 분석하지 않고 변경 행에 패턴을 적용하는 휴리스틱 방식이다. 여러 줄로 나뉜 테스트 선언 등에서 놓치거나 오탐할 수 있고, 테스트 수 증감은 diff 전체를 기준으로 계산한다. Ruby, C#, C/C++, PHP, Swift와 사용자 정의 테스트 DSL의 소스 코드는 분석하지 않지만, 해당 언어 프로젝트의 CI 설정 변경은 검사 대상이다. 네트워크 호출은 하지 않으며 git만 실행한다.
저장소에는 MIT 라이선스가 적용된다. 에이전트 지침은 SKILL.md, CI 예시는 GitHub 워크플로 파일, 기여 안내는 CONTRIBUTING.md에서 확인할 수 있다. Claude Code, Codex, Gemini CLI의 훅 문서는 각각 Claude Code, Codex, Gemini CLI에 있다.
fakegreen CLI와 훅, 사전 커밋 훅, GitHub Action은 무료로 제공된다. 제작자는 팀용 호스팅 서비스는 아직 개발되지 않았으며, 대기자 명단을 받고 있다고 밝혔다. 후원은 GitHub Sponsors, 문의는 이메일로 할 수 있다. npm 패키지는 npm에서 확인할 수 있고, 필요한 런타임은 Node.js다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요