프로젝트 소개

PMD는 확장 가능한 다국어 정적 코드 분석기입니다. 소스 코드를 스캔하여 사용되지 않는 변수, 빈 catch 블록, 불필요한 객체 생성과 같은 일반적인 프로그래밍 결함을 찾아냅니다. 주로 Java와 Apex를 대상으로 하지만, 16개의 다른 언어를 지원하며 400개 이상의 내장 규칙을 제공합니다. 규칙은 Java로 작성된 사용자 정의 구현으로 확장하거나 XPath 쿼리로 표현할 수 있습니다. 파싱은 JavaCC와 Antlr로 수행되며, 소스 파일을 추상 구문 트리(AST)로 변환한 다음, 해당 트리에 대해 규칙을 실행하여 위반 사항을 보고합니다. 지원 언어에는 Java, JavaScript, Salesforce.com Apex 및 Visualforce, 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, Salesforce.com Apex 및 Visualforce, Scala, Swift, T-SQL, TypeScript, Apache Velocity, WSDL, XML, XSL에서 중복 코드를 찾아냅니다. 설치 및 사용법: 릴리스 페이지에서 최신 바이너리 zip을 다운로드하여 압축을 풀고 `bin/pmd check`(Windows에서는 `bin\pmd.bat check`)를 실행합니다. Maven과 Gradle은 물론 다양한 IDE를 위한 플러그인도 있습니다. 문서는 docs.pmd-code.org에서 확인할 수 있으며, 지원은 StackOverflow, GitHub 토론 및 이슈, Gitter 방, Gurubase 어시스턴트를 통해 제공됩니다. 규칙 디자이너는 pmd/pmd-designer 저장소에서 별도로 개발됩니다. 기여는 풀 리퀘스트를 통해 환영하며, 주요 변경 사항은 먼저 이슈에서 논의합니다. 이 프로젝트는 all-contributors 명세를 따르며 BSD 스타일 라이선스로 배포됩니다.