====== PMD ====== * [[https://pmd.github.io/|PMD]] [[java:static_analysis|Java Static Analysis]] 도구 * [[http://lf.hisfy.com/wiki/PMD_%EA%B8%B0%EB%B3%B8_%EA%B7%9C%EC%B9%99|PMD 기본 규칙]] * [[ci:jenkins:warnings_next_generation|Jenkins Warnings Next Generation]] ===== 기본 규칙 ===== * PMD 바이너리를 다운로드 하면 ''lib/pmd-java-[version].jar'' 형태의 Rule jar 파일이 있는데, 해당 파일을 열어보면 ''rulesets/[language]/*.xml'' 에 기본 RuleSet 들이 들어있다. * 혹은 소스에서 볼 수도 있다. [[https://github.com/pmd/pmd/tree/master/pmd-java/src/main/resources/rulesets/java|기본 Java RuleSets]] ===== Gradle 설정 ===== * [[https://docs.gradle.org/current/userguide/pmd_plugin.html|Gradle PMD plugin]] apply plugin: 'pmd' pmd { toolVersion = '5.5.1' // PMD 버전별로 버그가 있을 수 있어 버그 없는 특정 버전을 명시해야 할 수 있음. ignoreFailures = true // 위반이 있어도 report만하고 넘어감 } // 혹은 tasks.withType(Pmd) { ignoreFailures = true ruleSetFiles = rootProject.files("/path/to/pmd.xml") exclude "package/to/querydsl/**/Q*.java" // excludes ... reports { xml.enabled true html.enabled false } }