
생성형 AI가 불필요한 변경을 하지 않았는지, 삭제된 파일과의 차분(diff)으로 확인하기
요약
생성형 AI를 이용한 파일 분할 작업 시 발생할 수 있는 의도치 않은 로직 변경을 검증하는 방법을 소개합니다. Git의 이력을 활용해 삭제된 원본 파일과 새로 생성된 파일 간의 차분(diff)을 비교하여 코드의 무결성을 확인하는 팁을 다룹니다.
핵심 포인트
- Git 이력을 활용해 삭제된 파일의 내용을 추출하여 비교 가능
- git diff -w 옵션으로 들여쓰기 변경을 무시하고 로직 차분 확인
- VS Code의 diff 기능을 활용해 시각적으로 정밀한 검토 수행
- 조건 분기, 반환값, 에러 핸들링 등 핵심 로직의 변경 여부 필수 점검
생성형 AI (Generative AI)에게 파일 분할을 맡기면 편리합니다.
예를 들어, 하나의 파일에 모여 있던 처리를 수신 측과 워커(Worker) 측으로 나누는 것과 같은 작업입니다.
하지만 조금 신경 쓰이는 점이 있습니다.
"파일을 나누려고만 했을 뿐인데, 불필요한 변경까지 포함되어 있지는 않은가?"
이 기사에서는 삭제된 원본 파일을 Git에서 추출하여, 새로 만들어진 파일과 차분 (diff)을 비교하는 작은 팁을 소개합니다.
원래 다음의 1개 파일에 처리가 모여 있었다고 가정해 봅시다.
lib/webhook.ts
이를 다음의 2개 파일로 분할했습니다.
lib/webhook-receiver.ts
lib/webhook-worker.ts
원래의 lib/webhook.ts는 불필요해졌으므로 삭제되었습니다.
lib/webhook.ts는 삭제되었습니다.
하지만 Git의 이력에는 남아 있습니다.
예를 들어, 삭제 전의 파일이 이전 커밋에 있다면 다음과 같이 비교할 수 있습니다.
git diff -w HEAD~1:lib/webhook.ts lib/webhook-worker.ts
git diff -w HEAD~1:lib/webhook.ts lib/webhook-receiver.ts
HEAD~1:lib/webhook.ts는 "이전 커밋에 있던 lib/webhook.ts"라는 의미입니다.
-w는 공백의 변경을 무시하는 옵션입니다.
파일 분할 시에는 들여쓰기 (indent)가 바뀌기 쉬우므로, 로직의 차분을 보고 싶을 때 유용합니다.
터미널의 diff만으로는 확인하기 어려운 경우에는 VS Code로 열 수 있습니다.
git show HEAD~1:lib/webhook.ts | code --diff - lib/webhook-worker.ts
git show HEAD~1:lib/webhook.ts | code --diff - lib/webhook-receiver.ts
git show HEAD~1:lib/webhook.ts로 삭제 전의 파일 내용을 추출합니다.
그것을 code --diff - 현재 파일로 넘김으로써, VS Code의 diff 화면에서 비교할 수 있습니다.
확인해야 할 포인트는 다음 4가지입니다.
특히 보고 싶은 것은 마지막인 "불필요한 변경"입니다.
파일 분할을 의도했는데 조건 분기 (conditional branching), 반환값 (return value), 에러 핸들링 (error handling) 등이 바뀌었다면 주의해야 합니다.
삭제된 파일이라도 Git의 이력에 남아 있다면 diff 할 수 있습니다.
git diff -w HEAD~1:lib/webhook.ts lib/webhook-worker.ts
git diff -w HEAD~1:lib/webhook.ts lib/webhook-receiver.ts
VS Code에서 보고 싶다면 이것입니다.
git show HEAD~1:lib/webhook.ts | code --diff - lib/webhook-worker.ts
git show HEAD~1:lib/webhook.ts | code --diff - lib/webhook-receiver.ts
생성형 AI에게 맡기면 작업은 빨라집니다.
하지만 마지막에 차분을 읽는 것은 자신입니다.
"분할했을 뿐"이라고 생각한 것이 의도하지 않은 사양 변경이 되어 있지는 않은지.
그 확인에 삭제된 파일과의 diff가 도움이 될 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기