중복된 코드(Duplciated Code)는 Long Method와 함께 Bad Smell의 대표적인 사례 중 하나다. 사람이 중복된 코드를 찾기 위해서는 모든 코드를 봐야하지만, 컴퓨터는 이를 손쉽게 할 수 있다. 컴퓨터가 쉽게 할 수 있는 일은 컴퓨터에게 맡기자.
Eclipse에서 중복된 코드를 탐지해주는 플러그인은 두가지가 있다. 예전에 한번 언급했던 PMD의 부가적인 기능인 CPD(Copy/Paste Detector)를 사용하거나 SDD (프로젝트 사이트)를 사용할 수 있다.
두 플러그인 모두 중복된 코드를 탐지하는 기능 자체는 잘 동작하나, 완성도가 좀 부족해보인다. CPD의 경우에는 중복된 코드에 대한 리포트를 텍스트 파일로 출력해주고, SDD는 Eclipse의 View를 사용해 바로바로 중복된 코드로 찾아갈 수 있도록 되어있으나, 라인 단위가 아닌 문자 단위라서 조금 불편하다. 두 플러그인 모두 하나의 프로젝트 내에서만 중복 코드 탐지가 가능하기 때문에, 여러 프로젝트 간에 코드를 Copy-and-Paste하는 경우를 탐지할 수 없다.
재미있게도 SDD는 정일영이라는 고려대 컴퓨터교육과 분이 만드셨는데, 이걸로 OOPSLA 2005 포스터 세션에 나가신 모양이다. 왠지 얼굴을 알고 있는 분이라는 생각이…
덧붙여, 코드 분석에 관련된 Eclipse 플러그인에 관심이 많다면 Automation for the people: Improving code with Eclipse plugins 이라는 기사가 도움이 될 것이다. Test coverage를 위한 Coverclipse나 Dependency analysis를 위한 JDepend와 같은 플러그인들은 아직 시도해보지 못했다.