알라딘MGG와이드바


PMD Copy/Paste Detector(CPD) 를 써 보자. 개발 이야기

Copy/Paste Detector 을 써 봤는데 중복 코드(copy & paste code) 를 잘 잡아주네요. :)
PMD 를 받은 후 압축 풀고, bin 폴더의 cpdgui.bat 를 실행하면 다음과 같은 화면이 나옵니다.(단 자바를 먼저 설치해야 합니다)
화면은 보면 알겠지만, 몇 줄까지 중복될 때 중복코드로 처리할 것인지를 정할 수 있습니다.
cmd 로 실행해 보면 export 형식도 text, csv, xml 등을 선택할 수 있고
ruleset 을 지정하면, unusedcode 를 찾아주는 등의 작업도 할 수 있는 거 같습니다.



아래와 같은 병신 코드로 테스트 해 보면...

  1. int Test()   
  2. {   
  3.     if (rand())   
  4.     {   
  5.         return 1;   
  6.     }   
  7.     else  
  8.     {   
  9.         return 0;   
  10.     }   
  11. }   
  12.   
  13. int Test1()   
  14. {   
  15.     if (rand())   
  16.     {   
  17.         return 1;   
  18.     }   
  19.     else  
  20.     {   
  21.         return 0;   
  22.     }   
  23. }   
  24.   
  25. int _tmain(int argc, _TCHAR* argv[]) {   
  26.     Test();   
  27.     Test1();   
  28.   
  29.     return 0;   

아래와 같이 중복 코드를 찾아줍니다.
Found a 13 line (22 tokens) duplication in the following files: 
Starting at line 7 of E:\work\test\Test3\Test3.cpp
Starting at line 19 of E:\work\test\Test3\Test3.cpp

int Test1()
{
if (rand())
{
return 1;
}
else
{
return 0;
}
}

int _tmain(int argc, _TCHAR* argv[])
CI 에 붙여서 쓴다던지, 여러 용도로 쓸 수 있겠네요.

덧글

  • neojzs 2009/11/21 11:43 # 삭제 답글

    좋네요. SourceMonitor보다 심플해서 중복코드를 잘 찾아 주겠는 걸요.
  • 박PD 2009/11/21 14:54 #

    SourceMonitor 라는 것도 있군요. 좋은 정보 감사합니다.
  • kernel0 2009/11/21 20:07 # 삭제 답글

    음...command line 모드가 있었던가 싶네요. 없으면 만들어서 붙여야 ^^
  • 박PD 2009/11/21 23:35 #

    pmd 로 실행해 보니, cmd 모드로 옵션을 줄 수 있더군요. 가능할 듯. :)
  • 수몽 2009/11/23 17:39 # 삭제 답글

    tag 가 재미있네요 ^^. 만악의 근원 ㅎㅎ
  • 박PD 2009/11/23 23:26 #

    C&P 볼 때마다 머리가 지끈지끈거립니다. ㅎㅎ
  • 난슬롯 2009/11/28 12:20 # 삭제 답글

    오~ 이거 짱인데요?
    한번 해봐야겠네~
댓글 입력 영역


Yes24위대한게임의탄생3

위대한 게임의 탄생 3
예스24 | 애드온2