728x90

1.1.4 PMD 이클립스 플러긴 사용법

 

 

(1) PMD 플러긴 설치

 

먼저 이클립스용 PMD 플러긴을 설치해보자.

 

 

Step 1 이클립스 실행

 

이클립스 실행 > Help > Install New So5ftware > Add 선택 > Repository 등록

 

 

Name: PMD

URL: http://pmd.sourceforge.net/pmd-4.3.0/integrations.html#eclipse

 

그림 7 이클립스용 PMD 플러긴 설치 -1

 

Step 2 PMD 플러긴 설치

 

발견된 PMD 플러긴 선택 > NEXT 클릭하여 설치 과정을 마친다.

 

 

그림 8 이클립스용 PMD 플러긴 설치 -2

 

Step 3 PMD 설치 확인

 

설치 과정이 완료되면 이클립스가 재 실행된다. PMD가 정상적으로 설치되면 Window > preferences 에서 확인 가능하다. 여기서 PMD 환경 설정을 할 수 있다.

 

 

그림 9 PMD 설치 확인

 

 

(2) Maven을 이용한 Webgoat-5.4 프로젝트 빌드

 

Webgoat 5.3이후부터는 Webgoat 소스코드 및 프로젝트는 메이븐(Maven)에 의해 관리된다. 

메이븐은 메이븐은 프로젝트 객체 모델(Project Object Model)이라는 개념을 바탕으로 프로젝트 의존성 관리, 라이브러리 관리, 프로젝트 생명 주기 관리 기능 등을 제공하는 프로젝트 관리 도구이다. 

또한 플러그인을 기반으로 소스 코드로부터 배포 가능한 산출물을 만들어 내는 빌드 기능 뿐만 아니라 레포팅 및 documentation 작성 기능 등을 제공한다. 

 

 

따라서 이클립스에 메이븐을 설치하고, 앞서 다운로드한 소스코드를 메이븐 프로젝트로 빌드하여야 이클립스에 정상적으로 프로젝트를 Import 할 수 있다.

 

 

Step 1 메이븐 설치

 

다음 경로에서 메이븐을 다운로드하여 원하는 곳에 압축해제 한다. 

(현재 최신 버전 3.3.3)메이븐 다운로드: http://maven.apache.org/download.cgi

 

 

그림 10 메이븐 다운로드

 

 

컴퓨터 > 속성 > 고급시스템속성 >고급탭 > 환경변수 > 시스템 변수 > 새로만들기

 

다음과 같이 입력한다.

 

그림 11 메이븐 환경변수 등록

 

 

또한 시스템 변수의 Path에서 %MAVEN_HOME%\bin;을 등록한다. 환경변수 등록이 완료되면 커맨드창에 [maven –version]을 입력해 메이븐이 정상적으로 실행되는지 확인한다.

 

그림 12 메이븐 설치 확인

 

 

Step 2 메이븐 플러긴 설치

 

이클립스 > Window > Install New Software > Add 클릭하여 다음과 같이 입력한다.

 

그림 13 메이븐 플러긴 설치

 

 

검색된 플러긴을 설치한다.

 

그림 14 메이븐 플러긴 설치

 

 

다시 한번 Help > Install New Software 에서 Work With란에 http://m2eclipse.sonatype.org/sites/m2e-extras 를 입력하여

 

검색된 플러긴 중 Maven Integration for Eclipse Extras'와 'Maven Integration for Eclipse WTP' 를 체크하여 설치한다.

 

 

그림 15 이클립스 플러긴 설치

 

 

설치가 완료되면 이클립스가 재부팅된다. 

이클립스에서 메이븐 플러긴 환경 설정을 위해 Window > preference > User Sertting > Browser 버튼 클릭 > 메이븐 설치 경로 이하 setting.xml 설정 후 적용

 

 

그림 16 메이븐 플러긴 환경 설정

 

Step 3 메이븐 프로젝트 Import

 

File > Import > Maven > Existing Maven project > browser > 소스코드 루트 디렉터리 설정

 

그림 17 메이븐 프로젝트 Import

 

정상적으로 Import 되면 다음과 같을 것이다.

 

그림 18 메이븐 프로젝트 Import

 

Step 4 PMD 실행

 

Project Explorer에 나타난 Webgoat-5.4프로젝트를 선택하고 오른쪽 팝업 메뉴에서 PMD > Check Code를 누르면 PMD가 자바 코드를 분석하기 시작한다. 

 

 

그림 19 PMD 실행

 

그림 20 PMD 실행

 

4 단계 결과 분석

 

코드 분석이 완료되면 PMD뷰로 자동전환 되면서 PMD 규칙에 위반된 코드를 표시한 결과가 나타난다. 

 

그림 21 PMD 코드 분석 결과

 

PMD 뷰에서 왼쪽 하단의 Violation Outline에서는 간략한 위반 규칙 내용을 확인할 수 있다.

PMD는 규칙의 우선순위를 1 단계에서 5단계로 분류하며 값이 낮을수록 높은 위험을 가지고 있다. 

 

 

그림 22 PMD 우선 순위 

 

 

위의 결과에서CrossSiteScripting > EditProfile.java 파일을 선택하면 Violation Outline 뷰에서 PMD 규칙에 위반된 코드를 PMD 규칙 우선 순위에 따라 필터링된 결과를 간략하게 살펴 볼 수 있다. 

규칙에 위반된 코드의 라인과 규칙명, 에러 메세지가 나타난다.

 

그림 23 PMD Violation Outline

 

각 세부 규칙 위반에 대한 내용을 확인하기 위해서는 Violation Outline 뷰에서 규칙 선택 후 오른쪽 팝업 메뉴에서 [Show details]를 누르면 된다.

 

 

그림 24 PMD Violation 세부 사항 확인-1

 

그림 25 PMD Violation세부 사항 확인-2

 

명명 규칙 집합에 해당되는 MethodNamingconventions 규칙에 위반된 결과이다. 

설명을 보면 메서드 이름은 항상 소문자로 시작되어야 한다는 규칙에 위배되었음을 알 수 있다. 해당 라인의 코드를 확인하면 내용이 일치함을 알 수 있다.

 

그림 26 코드 확인

 

PMD 뷰의 오른쪽 하단에는 PMD 관련된 여러 뷰를 추가하여 관련된 내용을 확인할 수 있다. 

관련 뷰를 추가하기 위해서는 Window > Show View > Other..> PMD > 뷰 선택하면 된다.

Violation Overview에서는 각 파일 별로 위반된 규칙 수를 확인할 수 있고, 규칙 우선 순위에 따라 필터링 할 수 있다. Blocker 우선 순위로 필터링된 결과이다.

 

 

그림 27 PMD Violation Overview

 

 

(3) Cut and Paste 코드 찾기

 

중복(Code and Paste)코드는 일반적으로 좋지 않은 계획과 팀 워크를 의미하며 찾기가 힘들다. 

PMD의 Copy/Paste Detector(CPD)는 중복코드를 찾을 수 있게 해준다. CPD는 PMD 설치 시 함께 제공된다.

이클립스에서는 Window > PMD > CPD Preferences > Launch CPD를 누르면 CPD가 실행된다.

 

그림 28 CPD 실행 예제

화면을 살펴보면 소스 디렉터리 경로를 설정하고(1), 몇 줄까지 중복될 때 중복코드로 처리할 것인가를 설정하고(2), 언어 설정 후(3), Go를 누르면 분석된다. 

 

 

(4) 보고서 생성

발견된 결과를 보고서로 생성할 수 있다.

Project Explorer > 프로젝트 선택 > PMD > Generate Report 

 

그림 29 보고서 생성

보고서 생성이 완료되면 Webgoat 메이븐 프로젝트에 reports라는 새로 생성된 디렉터리에 있다.

 

그림 30 보고서 생성

 

(5) PMD 커스텀마이징(Customizing)

 

PMD를 커스텀마이징 하는 가장 쉬운 방법은 기존의 규칙을 수정하는 것이다. 

새로운 규칙을 추가하는 것뿐만 아니라 불필요한 규칙을 제거할 수 있다. 그러나 이러한 일은 많은 지식이 필요하다. 각 PMD 규칙은 6가지 속성을 가진다.

 

속성 명

비고

Rule name

수정 불가능

Rule implementation class

수정 불가능

Priority

수정 가능, 정수형으로 1에서 5 범위를 가짐

Message

수정 가능, 문자형

Description

수정 가능, 문자형

Example

수정 가능, 문자형

표 6 PMD 규칙 속성

6가지 속성 중 Rule name과 Rule Implementation class는 사용자에 의해 변경할 수가 없다. 

규칙을 수정하기 전에 반드시 기존 설정을 백업하도록 한다.

 

1 단계 기존 규칙 백업하기

 

이클립스 > Window > Preferences > PMD > Rules Configuration > Import Selected Rules --> pmd-rules.xml 파일로 저장한다.

 

그림 31 PMD 규칙 백업

규칙을 수정하려면 수정할 규칙을 선택 후 수정 가능한 항목 탭을 수정하면 된다. 

아래 예는 SystemPrintin 규칙의 우선 순위를 1에서 5로 변경한 예이다.

 

 

그림 32 PMD 규칙 수정

 

(6) 새로운 규칙 추가

 

....

 

PMD 고급 사용법-http://www.eclipsezone.com/articles/pmd/

PMD 홈페이지-https://pmd.github.io/

PMD 문서-http://pmd.sourceforge.net/pmd-4.3.0/integrations.html#eclipse

Webgoat 소스코드 -https://code.google.com/p/webgoat/source/checkout

https://blog.idrsolutions.com/2015/04/creating-your-own-custom-pmd-rulesets/


반응형

+ Recent posts