Jenkins 정적분석(PMD, FindBug, CheckStyle) 구축과 실행 결과

by Tom posted Aug 28, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

이번 포스트는 Java 프로젝트에서 많이 사용하고 있는 정적분석 도구인 PMD, FindBugs, CheckStyle을 연동하는 방법에 대해서 다룹니다. 


1. 정적분석

정적분석은 소프트웨어를 분석하는 방법의 하나로 소프트웨어를 실행하지 않고 코드 레벨에서 분석하는 방법입니다. 시중에는 다양한 오픈 소스 정적분석이 있으며, Java에서는 PMD, FindBug, CheckStyle과 같은 정적분석 도구를 많이 사용합니다. 


1.1 PMD

PMD는 미사용 변수, 비어있는 코드 블락, 불필요한 오브젝트 생성과 같은 Defect을 유발할 수 있는 코드를 검사합니다. PMD는 Java에서 많이 사용하지만, Javascript, PLSQL, Apache Velocity, XML, XSL과 같은 다양한 영어를 지원합니다. 


그리고 PMD의 부수적인 기능으로 CPD가 있는데, 이는 Copy-Paste-Detector의 약자입니다. 이름에서 알 수 있듯이 중복된 코드를 검출해주는 정적분석 도구 입니다. 이는 Java, C/C++, C#, PHP, Ruby, Fortran, Javascript, Object C, Python 등 다양한 언어를 지원하고 있습니다. 


다음 웹 사이트에서 좀 더 많은 정보를 얻을 수 있습니다. 

  • https://pmd.github.io/


1.2 FindBugs

FindBugs 또한 대표적인 Java의 정적분석 도구 입니다. GNU 라이센스로 미국의 Maryland 대학에서 만들었다고 합니다. FindBugs는 Java 프로그램에서 100여개의 잠재적인 에러 타입을 찾아주며, 이 잠재적인 에러는 scariest, scary, troubling, concern으로 구분하여 점수(rank)가 주어집니다. 


다음 웹 사이트에서 좀 더 많은 정보를 얻을 수 있습니다.

  • http://findbugs.sourceforge.net/


1.3 CheckStyle

CheckStyle은 개발된 코드가 얼마나 코딩 룰을 잘 따르고 있는지 분석해주는 정적 분석 도구 입니다. 기본적으로 내장된 코딩룰은 Google's Style과 Unix Style입니다. 하지만 조직만의 코딩 룰을 정의하고 작성된 코드들이 이를 잘따르고 있는지 점검할 수 있습니다. 


다음 웹 사이트에서 좀 더 많은 정보를 얻을 수 있습니다.

  • http://checkstyle.sourceforge.net/

2. 구축환경

현재 문서는 다음 버전의 구축 환경에서 테스트 되었습니다. 다른 버전의 도구 환경에서는 다른 결과를 나타낼 수 있습니다. 

  • Maven Java 프로젝트 - 3.3.3 버전
  • Jenkins - 1.624 버전


3. 구축하기

3.1 Jenkins Plugin 설치

Jenkins Plugin은 Jenkins > Jenkins 관리 > 설치 가능 탭에서 설치할 수 있습니다. 

다음 플러그 인들을 함께 설치하시기 바랍니다. 



다음 그림은 PMD 플러그인이 설치된 예제를 보여 줍니다. 

static01.PNG


3.2 환경 설정

정적분석 적용을 희망하는 프로젝트에서 환경 설정 메뉴로 진입합니다. 

아래 환경 설정을 차례로 실행합니다. 


3.2.1 Add pre-build step

먼저 Pre-build 단계에서 Goals and options에 다음 Maven Goal들을 추가합니다. pom.xml 수정없이 단지 Goals을 입력하기만 하면 maven 서버에서 필요한 파일을 가져와서 빌드를 해줍니다. Maven을 사랑할 수 밖에 없네요.


pmd:pmd pmd:cpd findbugs:findbugs checkstyle:checkstyle

아래 그림은 현재 저가 사용하고 Pre-build 단계의 골의 예제를 보여 줍니다. 

static02.PNG


3.2.2 Build Settings

다음은 Build Settings에서 아래 항목들을 Check 해줍니다. 이 역시 체크만 해주면 알아서 리포트들이 생성됩니다. 

  • Publish Checkstyle analysis results
  • Publish FindBugs analysis results
  • Publish PMD analysis results

static03.PNG


3.3 실행

모든 설정이 완료되었으면, Build Now를 클릭하여 빌드를 수행합니다. 



4. 수행 결과

4.1 Trend Graph

아래는 FindBugs와 Checkstyle Trend를 보여줍니다. Trend Graph를 통해 Warning 수를 확인하고 개발자들이 Warning을 얼마나 수정하고 있는지를 빌드마다 확인할 수 있습니다. 


static04.PNG


static05.PNG


4.2 세부 내용

4.2.1 FindBugs Result

다음은 FindBugs의 Warning의 내용을 보여줍니다. 


static06.PNG


4.2.2 CheckStyle Result

다음은 CheckStyle의 Warnning의 세부 내용을 보여줍니다. 


static07.PNG


이상으로 Jenkins에서 Static Analysis 대표 플러그인인 CheckStyle, FindBugs, PMD의 설치 방법에 대해서 알아보았습니다. 



Who's Tom

profile

저는 2009년 ALM의 세계에 뛰어 들었습니다. 

지금은 ALM, DevOps, 공학 프로세스, 요구공학, 테스트 엔지니어링 등 다양한 영역에 관심이 많습니다.

http://www.curvc.com