본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

PMD

0

PMD는 정적 코드 분석 도구로, 사용되지 않은 변수, 빈 catch 블록, 불필요한 객체 생성과 같은 일반적인 프로그래밍 결함을 찾아냅니다.

규칙 기반 분석린터복사 붙여넣기 감지정적 분석코드 품질

소개

PMD는 정적 코드 분석 도구로, 사용되지 않은 변수, 빈 catch 블록, 불필요한 객체 생성과 같은 일반적인 프로그래밍 결함을 찾아냅니다. 주로 Java와 Apex를 대상으로 하지만, 16개 이상의 다른 언어도 지원합니다. 400개 이상의 내장 규칙을 제공하며, 사용자 정의 규칙으로 확장할 수 있습니다. JavaCC와 Antlr을 사용하여 소스 파일을 추상 구문 트리로 파싱하고, 규칙을 적용해 위반 사항을 탐지합니다.

상세정보

정적 코드 분석 및 규칙 기반 탐지

PMD는 소스 코드를 분석하여 사용되지 않은 변수, 빈 catch 블록, 불필요한 객체 생성, 과도한 복잡도 등과 같은 일반적인 프로그래밍 결함을 찾아냅니다. 이 기능은 JavaCC와 Antlr을 사용해 소스 파일을 파싱하고, 추상 구문 트리(AST)에 규칙을 적용하여 작동합니다. 규칙은 Java로 작성하거나 XPath 쿼리를 이용해 정의할 수 있습니다.

CPD (Copy-Paste Detector) 포함

PMD는 CPD(Copy-Paste Detector)를 포함하여, Java, C/C++, C#, Go, Groovy, HTML, JavaScript, Kotlin, Lua, Matlab, Objective-C, Perl, PHP, Python, Ruby, Rust, Scala, Swift, T-SQL, TypeScript, XML, XSL 등 다양한 언어에서 중복된 코드 블록을 찾아냅니다. 이는 복사-붙여넣기로 인한 코드 중복을 줄이고 유지보수성을 높이는 데 유용합니다.

다중 언어 지원

PMD는 Java와 Apex를 주요 대상으로 하지만, 다음과 같은 언어도 지원합니다: JavaScript, Kotlin, Swift, Modelica, PL/SQL, Apache Velocity, JSP, WSDL, Maven POM, HTML, XML, XSL. Scala는 언어 수준에서 지원되지만, 현재 Scala용 규칙은 제공되지 않습니다. 또한 CPD는 Coco, C/C++, C#, CSS, Dart, Fortran, Gherkin, Go, Groovy, HTML, Java, JavaScript, JSP, Julia, Kotlin, Lua, Matlab, Modelica, Objective-C, Perl, PHP, PL/SQL, Python, Ruby, Rust, Scala, Swift, T-SQL, TypeScript, Apache Velocity, WSDL, XML, XSL에서 중복 코드 감지를 지원합니다.

다운로드·설치 방법

공식 웹사이트에서 최신 바이너리 ZIP 파일을 다운로드할 수 있습니다. 다운로드 후 압축을 해제하고, bin 폴더를 시스템 PATH에 추가하여 사용할 수 있습니다. Windows 환경에서는 Chocolatey 패키지 관리자를 통해 choco install -y pmd 명령으로 간단히 설치할 수 있습니다. 설치 후 명령 프롬프트에서 pmd.bat check 명령을 실행하여 분석을 시작할 수 있습니다.

기본 사용법/명령어

PMD를 실행하려면 터미널 또는 명령 프롬프트에서 pmd check -d <경로> -R <규칙셀> -f <출력 형식> 형식의 명령을 사용합니다. 예를 들어, Java 소스 코드를 분석하려면 pmd.bat check -d c:src -R rulesets/java/quickstart.xml -f text 명령을 실행할 수 있습니다. 여기서 -d는 분석할 디렉터리, -R는 적용할 규칙셀 파일, -f는 출력 형식(text, xml, html 등)을 지정합니다. 분석 결과는 콘솔에 텍스트 형태로 출력되며, 위반 사항이 발견되면 파일 이름, 줄 번호, 규칙 설명과 함께 표시됩니다.

이런 경우에 유용합니다

개발자가 코드 리뷰 전에 자동으로 잠재적인 버그나 코드 품질 문제를 찾아내고 싶을 때 유용합니다. 특히 Java 또는 Apex 프로젝트에서 unused 변수, 빈 예외 처리, 불필요한 객체 생성과 같은 일반적인 실수를 사전에 방지하고자 하는 팀에 적합합니다. 또한 대규모 코드베이스에서 복사-붙여넣기로 인한 중복 모듈을 찾아내어 리팩터링이 필요한 영역을 식별하는 데 CPD 기능을 활용할 수 있습니다.

지원 환경·시스템 요구사항

PMD는 Java 8 이상을 실행 환경으로 요구합니다. 이는 PMD 자체가 Java로 작성되어 있고, JavaCC와 Antlr 파서를 사용하기 때문입니다. Windows, macOS, Linux 등 주요 운영 체제에서 Java가 설치되어 있다면 실행할 수 있습니다. ZIP 배포판을 사용할 경우, 압축 해제 후 bin 디렉터리를 PATH에 추가하면 됩니다. Chocolatey를 통한 설치 시, 의존성인 Java가 자동으로 처리되지 않을 수 있으므로, 사전에 Java 8 이상이 설치되어 있어야 합니다.

최신 버전·업데이트

공식 웹사이트 및 GitHub 저장소에서 최신 버전 정보를 확인할 수 있습니다. 현재 버전은 7.27.0(2026년 8월 28일 출시)이며, 정기적으로 새로운 규칙 추가, 언어 지원 확장, 성능 개선, 버그 수정이 이루어집니다. 변경 사항은 공식 릴리스 노트에서 확인할 수 있으며, 주요 업데이트로는 새로운 언어 지원, 규칙셀 개선, IDE 플러그인 호환성 향상 등이 포함됩니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.