코드의 품질을 높이기 위해서 많이 사용되는 것이 코드에 대한 정적분석을 통해서 코드의 품질을 평가하는 것이다.
코드정적분석에 사용되는 도구로는 checkstyle, findbugs, PMD 등 이 있다. 그레들gradle에 checkstyle, PM 를 추가하는 방법을 설명한다.
1. checkstyle
1.1. 사용방법
1.1.1. gradle's checkstyle 플러그인 추가
apply plugind: 'checkstyle'
build.gradle 파일에 플러그인을 추가한다.
1.1.2. checkstyle.xml 작성
1.1.3. build.gradle 파일에 checkstyle 태스크를 정의한다.
checkstyle {
ignoreFailures = true // 분석결과 예외가 발생하면 빌드실패 발생시키는 것을 제외
configFile = file("checkstyle.xml") // 1.1.2 에서 작성한 checkstyle 파일 지정
reportsDir = file("${buildDir}/checkstyle-output") // 리포트 파일이 위치할 디렉토리 지정
}
checkstyleMain {
reports {
xml.destination = file("${checkstyle.reportsDir}/checkstyle-report.xml") // 리포트 파일의 위치 및 파일명 지정
}
}
1.1.4. checkstyle 실행
$ gradle check
checkstyle 플러그인을 추가하면 그레들의 check 태스크를 수정하여 checkstyle 의 checkstyleMain, checkstyleTest 들을 실행시킨다.
1.2. 태스크Tasks
Task name | Depends on | Type | Description |
---|
checkstyleMain | classes | Checkstyle | Runs Checkstyle against the production Java source files. |
checkstyleTest | testClasses | Checkstyle | Runs Checkstyle against the test Java source files. |
checkstyleSourceSet | sourceSetClasses | Checkstyle | Runs Checkstyle against the given source set's Java source files. |
1.3. checkstyle.xml 기본구조
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<property name="charset" value="UTF-8" />
<property name="severity" value="warning" />
<property name="fileExtensions" value="java, properties, xml" />
<module name="TreeWalker">
<!-- 사용되는 모듈과 모듈속성을 정의-->
</module>
</module>
2. PMD
2.1. 사용방법
2.1.1. gradle's pmd 플러그인 추가
apply plugind: 'pmd'
build.gradle 파일에 플러그인을 추가한다.
2.1.2. pmd 태스크의 속성을 정의한다.
pmd {
ignoreFailures = true // 분석결과 예외가 발생하면 빌드실패 발생시키는 것을 제외
reportsDir = file("${buildDir}/pmd-output")
}
pmdMain {
reports {
xml.destination = file("${pmd.reportsDir}/pmd-report.xml")
xml.enabled = true
}
}
2.1.3. 실행
$ gradle check
PMD 플러그인이 check 태스크에 의존성을 추가한다.
2.2. 태스크Tasks
태스크명 | 의존 | 유형 | 설명 |
---|
pmdMain | - | Pmd | 출시 소스파일을 대상으로 PMD 실행 |
pmdTest | - | Pmd | 테스트 소스파일을 대상으로 PMD 실행 |
pmdSourceSet | - | Pmd | 지정된 소스셋SourceSet을 대상으로 PMD 실행 |
3. 정리
checkstyle과 pmd 에서 생성한 XML 보고서는 JENKINS에서 사용하기 위한 분석데이터로 사용된다.
JENKINS에서 checkstyle, pmd 플러그인을 설치한 후 report.xml 경로를 지정한 후
빌드가 정상적으로 진행되면서 분석문서가 생기면 다음과 같은 항목들이 왼쪽 메뉴에 추가가 되고,
각각의 결과를 확인할 수 있다.
○ 참고문헌