Gradle

JAVA 정적 분석 프로그램( Spotbugs, PMD )

구티맨 2021. 1. 19. 14:18

JAVA 를 정적분석해주는 2개의 프로그램을 소개하려고 합니다.

 

Spotbugs는 Java의 바이트코드를, PMD는 Java 소스코드를 체크하여 정적분석을 해줍니다.

 

둘다 정적분석이라는 점에서는 같지만 점검하는 대상이 다르기 때문에 서로 정적분석 하는 관점도 달라지게 됩니다.

 

그렇기 때문에 어느 것이 더 좋다 라고 하기는 힘들고,

 

서로 찾아주는 문제점들이 다르기 때문에 모두 사용하는 것을 추천합니다.

( stackoverflow.com/a/4297378/1813672 )

Spotbugs

Gradle 5.6 이전까지만 해도 FindBugs라는 plugin이 사용되어 왔으나

 

Gradle 5.6 버전 이후부터, FindBugs plugin이 삭제가 되어, 대신에 SpotBugs plugin을 사용할 수 있습니다.

( docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed )

 

Ant, Gradle, Maven 에서 plugin 적용 및 관련 코드를 작성하여 사용할 수 있고

 

또는 Eclipse나 IntelliJ 같은 IDE 에서 plugin 으로 설치하여 사용할 수도 있습니다.

IntelliJ Plugins

PMD

사용 방법은 PMD plugin 을 적용하고, check 태스크를 수행하면 됩니다.

 

물론, 빌드 라이프사이클에 추가해서 매번 체크할 수 있습니다.

 

	apply plugin: 'pmd'

	pmd {
		ignoreFailures = true
		pmdTest.enabled= false
		ruleSets = [
			'java-basic',
            'java-braces',
            'java-clone',
            'java-codesize',
            'java-comments',
            'java-controversial',
            'java-coupling',
            'java-design',
            'java-empty',
            'java-finalizers',
            'java-imports',
            'java-optimizations',
            'java-strictexception',
            'java-strings',
            'java-typeresolution',
            'java-unnecessary',
            'java-unusedcode'		
		]	
	}
	
	tasks.withType(Pmd){
	    reports{
	        xml.enabled=true
	        html.enabled=true
	    }
	}