'CPD'에 해당되는 글 2건

  1. 2009.01.07 PMD사용한 중복 소스 코드 제거
  2. 2009.01.06 삽질의 연속
1. PMD란?
오픈소스 자바 소스 인스펙터로
Copy/Paster Detector (CPD) , 코드 리뷰 기능이 있다.

2. Eclipse Plug-in 설치
플러그인 업데이트 URL : http://pmd.sourceforge.net/eclipse/ (이클립스 3.4 기준)
Help > Software Updates 로 이동

이클립스 플러그인 추가


Add Site로 URL을 입력, Install 시작

http://pmd.sourceforge.net/eclipse URL 입력


Install이 성공적으로 완료후 PMD Perspective 사용 가능

PMD Perspective


3. 중복코드 검사
'Find Suspect Cut and paste'를 수행하면 프로젝트내 중복코드를 검출한다.

Find Suspect Cut And Paste


실행시에 체크할 언어와, tile size등과 검출 결과를 어떤 포맷으로 출력한것인지도 결정할수 있다.

Simple Text로 결과를 출력한 중복 코드 검사 결과.
CPD View를 통해서 결과를 볼수 있으며, 중복된 클래스와 라인수 까지 출력된다.

중복 코드 검출 결과 샘플


4. 코드 리뷰
'Check Code With PMD'로 코드의 표준 위반 사항을 검출

Check Code With PMD


Violation Overview와 Violation Outline 를 통해 위반 사항등을 볼수 있다.

PMD Code Check 결과


자세한 위반 사항과 권고사항은 Show Details를 통해 확인 가능

Detail 정보


자세한 위반 사항.
Description을 통해 위반 사항인 이유와 권고 사항을 알수 있고, Examples 코드를 통해서 어떤 식으로 코딩해야 올바른지 설명함.

Check Detail Info


참고 URL
사람을 위한 자동화: Continuous Inspection (한글)
http://www.ibm.com/developerworks/kr/library/j-ap08016/index.html

PMD로 버그 잡기
http://www.ibm.com/developerworks/kr/library/j-pmd/

사람을 위한 자동화: Eclipse 플러그인으로 코드 품질 높이기
http://skyforce.egloos.com/1825127

자바 프로그램 분석기 - PMD
http://flex.okjsp.pe.kr/seq/30422
저작자 표시
신고
Posted by 영겁회귀
사내 프레임워크에 대한 리팩토링을 맡게 되었다. 기간은 8개월 정도로 길다면 길수도, 짧다면 짤을수도 있다.
막상 시작하려 하니 막막한것이 사실이다.
내가 관여하던 파트 외의 부분에서는 코드를 이해하기도 힘들고, 또 외부 jar를 풀어서 프레임워크에 묶은 경우,

패키지나 네이밍등으로도 알아 챌수 없는 클래스들 및 패키징 구조..
또한 어떻게 개선해 나가야 할지,

단순히 중복된 코드를 제거하고, 클래스 네이밍, 패키지 구조등을 정리하는 것을 원하는 것 같지만

막상 그것만 하기는 억울하고, 기왕 하는거 한단계 올라설수 있도록, 조금 복잡하고 오래 걸릴지라도 노력을 기울여 보고 싶은데 시작을 어떻게 해야할지..

일단 코드 분석을 시작하면서 체크해 내야 할점은,

  1. 중복 코드
    Copy & Paste 되어 복제된 코드를 골라내어, 해당 코드 삭제및 클래스 삭제/변경
  2. 유사코드
    비슷한 목적, 비슷한 형태로 생성된 클래스와 메소드 들을 골라내어 중복된 개수, 기능등을 단일화 시켜야 함
  3. 미사용코드
    사용 목적이 지났거나 대체 클래스 메소드가 생성되어 더이상 사용되지 않는  클래스, 메소드들을 찾아내어 삭제
  4. 패키징 변경
    이름부터 시작해서, 패키징에 대한 규칙을 세워 re패키징을 실시
  5. 그밖의 개선
    재사용이 가능하고 견고한 (?) 구조로 프레임워크 개선

현재 세운 초기 계획이다. 프레임워크의 구조가 방대하고 업무적으로 전혀 알지 못하는 클래스가 반절이 되기 때문에 좀 걱정이고, 이거에 따른 JSP파일 까지 모두 포함되기 때문에 휴..

같이 진행할 팀원과 Task를 공유하기 위해서 Mylyn와 Trac을 찾아보다 하루를 허비하고,
중복코드를 찾는 방법등을 찾기 위해 또 하루를 허비하고,
아예 헛수고를 한것은 아니지만,

첫번째 : http://www.ibm.com/developerworks/kr/library/j-ap08016/index.html
현재 소스의 분석을 위한 CheckStyle, CPD, JavaNCSS 등에 대한 설명을 듣게됨.
애석하게도 CheckStyle 플러그인은 제대로 동작하지 않았지만,  중복된 코드를 체크해 낼수있는 CPD라는 플러그인을
찾게되어 너무 다행임. 첫걸음은 좀 쉽게 뗄수 있을것 같음 ^^;

 

 


저작자 표시
신고
Posted by 영겁회귀

티스토리 툴바