====== Java Static Analysis ====== * [[java:jspecify|jspecify]] * [[java:findbugs|Java FindBugs]] * [[java:spotbugs|SpotBugs]] * [[java:pmd|PMD]] * [[java:checkstyle|Checkstyle]] * [[java:sonarqube|SonarQube]] - [[java:sonarqube:sonarlint|SonarLint]] * [[java:quilice|Quilice]] * [[java:errorprone|Java ErrorProne]] * [[java:null_check|Java Null Check]] * [[java:checker|Checker Framework]] * [[java:rewrite|Rewrite]] * [[ci:jenkins:warnings_next_generation|Jenkins Warnings Next Generation]] : 여러 정적 분석 결과를 [[ci:jenkins|Jenkins]] 에서 수집해서 보여줌. ===== Gradle 설정 ===== * [[:gradle|Gradle]] 과 정적 분석 * https://github.com/vanniktech/gradle-code-quality-tools-plugin ===== Gradle & exclude 처리 ===== * Gradle로 정적 분석시 일부 파일 exclude 처리하기 * 현재(2016년, Gradle 2.14.x) PMD, Checkstyle은 ''exclude''가 먹지만, FindBugs는 이게 안 먹고 class filter를 해야한다. * [[http://stackoverflow.com/questions/22037499/using-excludes-config-in-findbugs-and-checkstyle-plugin-in-gradle|Using "excludes" config in Findbugs and Checkstyle plugin in Gradle]] 질문글의 마지막 부분에 정리돼 있음. def excludePattern = 'org/jsense/serialize/protobuf/gen/' def excludePatternAntStyle = '**/' + excludePattern + '*' tasks.withType(FindBugs) { classes = classes.filter { !it.path.contains(excludePattern) } } tasks.withType(Checkstyle) { exclude excludePatternAntStyle } tasks.withType(Pmd) { exclude excludePatternAntStyle }