에이전트는 어떻게 리팩터링 하는가

에이전트는 어떻게 리팩터링 하는가
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 연구는 Claude Code, GitHub Copilot, Cursor Agent, Devin, OpenAI Codex 등 다섯 가지 코드 에이전트가 Java 프로젝트에서 수행한 리팩터링을 86개 프로젝트의 개발자 리팩터링과 비교 분석한다. RefactoringMiner와 DesigniteJava 3.0을 이용해 리팩터링 유형과 리팩터링 전후의 코드 냄새 변화를 측정했으며, 에이전트는 주로 어노테이션 관련 리팩터링에 집중하고, 구조적 리팩터링은 개발자에 비해 다양성이 낮았다. 코드 냄새 측면에서는 대부분의 에이전트가 개발자와 유사한 영향을 보였지만, Cursor Agent만이 통계적으로 유의미하게 코드 냄새를 증가시켰다.

상세 분석

이 논문은 에이전트 기반 자동화가 소프트웨어 유지보수 단계, 특히 리팩터링에 미치는 영향을 실증적으로 조사한다. 데이터 수집은 AIDev 저장소에서 1,278개의 에이전트 PR과 86개의 순수 개발자 프로젝트를 선정했으며, 총 2,626개의 에이전트 커밋 중 413개가 리팩터링을 포함한다. RefactoringMiner의 높은 정밀도(97.96%)와 재현율(87.20%)을 활용해 리팩터링 유형을 추출했으며, DesigniteJava 3.0을 통해 30여 가지 디자인 냄새를 검출한다.

리팩터링 유형 분석에서 가장 눈에 띈 점은 에이전트가 ‘Add Method Annotation’, ‘Add Parameter Annotation’, ‘Modify Method Annotation’ 등 어노테이션 추가·수정 작업을 과도하게 수행한다는 것이다. Claude Code는 전체 리팩터링 중 91% 이상이 어노테이션 관련이며, 평균 커밋당 762개의 변경을 수행해 대규모 배치 업데이트 특성을 보인다. 반면 Copilot은 어노테이션과 구조적 변화를 혼합해 개발자와 가장 유사한 분포를 나타낸다. Cursor는 전체 리팩터링 수가 가장 적지만, ‘Extract Method’, ‘Move Class’ 등 구조적 리팩터링에 집중한다.

코드 냄새 변화 측면에서는 대부분의 에이전트가 평균 Δ(변화량)가 0에 가깝거나 약간 증가하는 수준을 보였다. Claude Code는 평균 35.5개의 냄새가 증가했지만, 통계적 유의성이 없으며 효과 크기도 작다(Cohen’s d 0.14). Copilot, Devin, OpenAI Codex도 개발자와 차이가 미미했다. 유일하게 통계적으로 유의미한 결과를 보인 Cursor는 평균 Δ가 19.86으로, 개발자 평균 Δ 2.43에 비해 크게 증가했으며 효과 크기(Cohen’s d 0.51)도 중간 수준이다. 이는 구조적 리팩터링을 수행하면서도 부작용이 발생할 가능성을 시사한다.

연구는 또한 에이전트별 리팩터링 빈도와 비율을 부트스트랩 방식으로 95% 신뢰구간을 제시해 신뢰성을 확보했다. 개발자 그룹은 17,523개의 리팩터링 중 가장 흔한 유형이 ‘Change Attribute Access Modifier’(5.92%)였으며, 구조적 변화를 고르게 수행한다. 반면 에이전트는 상위 5개 유형이 모두 어노테이션 관련으로, 리팩터링 다양성이 현저히 낮다.

이러한 결과는 현재 에이전트가 구조적 설계 개선보다는 메타데이터(어노테이션) 관리에 특화되어 있음을 보여준다. 또한, 리팩터링이 반드시 코드 품질을 향상시키는 것이 아니라, 부적절한 적용 시 코드 냄새를 악화시킬 수 있음을 강조한다. 특히 Cursor와 같이 구조적 리팩터링을 수행하는 에이전트는 품질 검증 절차와 인간 리뷰가 필요함을 암시한다.


댓글 및 학술 토론

Loading comments...

의견 남기기