Claude Code Hooks를 활용한 RuboCop 자동 포매팅

Automatic Rubocop Formatting with Claude Code Hooks

작성자
발행일
2025년 07월 02일

핵심 요약

  • 1 Ruby 프로젝트에서 RuboCop을 자동으로 실행하기 위해 Claude Code Hooks를 활용하는 방법을 제시합니다.
  • 2 기존 Claude의 직접 지시 방식의 비효율성을 개선하여 파일 생성 및 편집 시 RuboCop이 자동 실행되도록 설정합니다.
  • 3 이 설정은 코드 스타일 일관성을 유지하고 개발 시간을 절약하는 데 기여합니다.

도입

Ruby 개발 환경에서 코드 스타일 가이드를 일관되게 유지하는 것은 프로젝트의 품질과 협업 효율성을 높이는 데 필수적입니다. 이 글은 RuboCop과 같은 코드 린터를 Claude와 연동하여 자동으로 실행하려는 시도와 그 과정에서 겪었던 문제점들을 다룹니다. 기존에는 Claude에게 직접 RuboCop 실행을 지시하는 방식이 제안되었으나, 이는 파일 누락, 수동 실행 필요, 또는 Claude가 직접 코드 오류를 수정하려 시도하는 등의 불안정성을 보였습니다. 이러한 문제점을 해결하고 보다 안정적인 자동 포매팅 환경을 구축하기 위해 Claude Code Hooks를 활용한 새로운 접근 방식이 모색되었습니다.

이 글에서 제안하는 해결책은 Claude Code Hooks, 특히 PostToolUse 훅을 활용하는 것입니다. PostToolUse 훅은 Claude가 파일을 편집하거나 작성한 후에 특정 스크립트를 자동으로 실행하도록 설정할 수 있게 합니다. 제시된 훅 설정은 다음과 같습니다:

json "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "FILE_PATH=$(jq -r '.tool_input.file_path // empty'); if [[ "$FILE_PATH" =~ \.(rb|rake)$|Rakefile$|Gemfile$ ]]; then echo "Running RuboCop on $FILE_PATH"; bundle exec rubocop --autocorrect "$FILE_PATH"; fi" } ] } ] }

이 설정의 작동 방식은 다음과 같습니다:

  • 이벤트 트리거 (PostToolUse): Claude가 파일 편집 또는 작성과 같은 도구 작업을 완료한 후에 이 훅이 실행됩니다.
  • 매처 (matcher: "Edit|Write"): 훅이 파일 편집 또는 작성 이벤트 후에만 실행되도록 제한합니다.
  • 명령어 분석: FILE_PATH=$(jq -r '.tool_input.file_path // empty')는 Claude의 도구 입력에서 편집된 파일 경로를 추출합니다. if [[ "$FILE_PATH" =~ \.(rb|rake)$|Rakefile$|Gemfile$ ]]; then 구문은 해당 파일이 .rb, .rake 확장자를 가지거나 Rakefile, Gemfile과 같은 Ruby 관련 파일인지 확인합니다. 이 조건이 충족되면 bundle exec rubocop --autocorrect "$FILE_PATH" 명령어를 실행하여 해당 파일에 대해 RuboCop 자동 수정을 즉시 적용합니다.

참고 사항으로, --autocorrect 옵션은 안전한 수정만 적용하며, 사용자의 환경에서 bundle exec rubocop 명령어가 정상적으로 작동하는지 확인해야 합니다. 이 설정은 수동 개입 없이도 일관된 스타일 가이드를 강제할 수 있다는 장점을 가집니다.

결론

이러한 Claude Code Hooks의 활용은 Ruby 프로젝트에서 코드베이스를 깔끔하게 유지하고 개발 시간을 절약하는 데 매우 효과적인 방법입니다. RuboCop과 같은 린터를 CI/CD 파이프라인이나 로컬 개발 환경에 통합하는 것은 효율적인 개발 워크플로우의 핵심이며, Claude Code Hooks는 이러한 자동화를 더욱 유연하고 강력하게 만듭니다. 이 방법을 통해 개발자들은 코드 스타일 준수에 대한 부담을 줄이고 핵심 개발 작업에 더욱 집중할 수 있게 됩니다. 이 통합 방식은 코드 품질을 향상시키고 팀 내 협업을 원활하게 하는 데 크게 기여할 것입니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!