
Android 및 Java 프로젝트를 위한 정적 분석 도구의 간편한 설정.
⚠️ 이 프로젝트의 포크는 https://github.com/GradleUp/static-analysis-plugin/ 에서 유지 관리됩니다. 대신
com.gradleup.static-analysis플러그인 ID를 사용하여 마이그레이션하세요.
Android, Java 또는 Kotlin 프로젝트 전반에 동일한 정적 분석 도구 설정을 쉽게 적용할 수 있는 Gradle 플러그인입니다.
이 플러그인을 사용할 때 빌드 속도에 오버헤드가 없도록 Task Configuration Avoidance를 지원합니다!
Gradle은 일련의 내장 플러그인을 통해 많은 인기 있는 정적 분석(Checkstyle, PMD, FindBugs 등)을 지원합니다. Android 모듈에서 이러한 플러그인을 사용하려면 Android 플러그인이 채택한 모델과 Java 플러그인의 차이를 보완하기 위해 추가 설정이 필요합니다.
gradle-static-analysis-plugin은 다음을 제공하는 것을 목표로 합니다:
이 플러그인은 Java, Kotlin 및 Android 프로젝트를 위한 다양한 정적 분석 도구를 지원합니다:
CheckstylePMDFindBugs [사용 중단] [Gradle 6.0에서 제거됨]SpotBugsDetektAndroid LintKtLint도구의 가용성은 플러그인이 적용되는 프로젝트에 따라 달라집니다. 자세한 내용은 지원되는 도구 페이지를 참조하세요.
고려 중인 모든 도구는 이슈를 참조하세요.
Android 프로젝트는 내장 정적 분석 도구 플러그인에서 지원하는 Java 모델과 호환되지 않는 Gradle 모델을 사용합니다.
Android 프로젝트에 gradle-static-analysis-plugin을 적용하면 추가 번거로움 없이 필요한 모든 작업이 생성되고 올바르게 구성됩니다.
jCenter에서 플러그인을 클래스패스 종속성으로 적용
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.novoda:gradle-static-analysis-plugin:1.2'
}
}
apply plugin: 'com.novoda.static-analysis'
또는 Gradle 플러그인 저장소에서:
plugins {
id 'com.novoda.static-analysis' version '1.2'
}
플러그인의 일반적인 구성은 다음과 같습니다:
staticAnalysis {
penalty {
maxErrors = 0
maxWarnings = 0
}
checkstyle { }
pmd { }
findbugs { }
spotbugs { }
detekt { }
lintOptions { }
}
이렇게 하면 모든 도구가 기본 설정으로 활성화되고 evaluateViolations 작업이 생성됩니다. ./gradlew evaluateViolations 작업을 실행하면 구성된 모든 도구가 실행되고 보고서가 콘솔에 출력됩니다. 더 고급 구성에 대해서는 고급 사용법 및 지원되는 도구 페이지를 참조하세요.
두 개의 샘플 Android 프로젝트가 있습니다. 하나는 일반 앱으로 구성되어 있으며 여기에서 확인할 수 있고, 다른 하나는 멀티 모듈 설정으로 구성되어 있으며 여기에서 확인할 수 있습니다. 두 샘플 프로젝트 모두 Checkstyle, FindBugs, SpotBugs, PMD, Lint, Ktlint 및 Detekt를 특징으로 하는 설정을 보여줍니다.
develop 브랜치의 스냅샷 빌드는 JCenter와 동기화되지 않은 저장소에 자동으로 배포됩니다.
스냅샷 빌드를 사용하려면 다음과 같이 추가 Maven 저장소를 추가하세요:
repositories {
maven {
url 'https://dl.bintray.com/novoda-oss/snapshots/'
}
}
최신 스냅샷 버전은 이 링크에서 찾을 수 있습니다.
이 프로젝트는 많은 Novoda 프로젝트와 다른 외부 프로젝트에서 알려진 중요한 문제 없이 일상적으로 사용되고 있습니다.
향후 개선 사항 및 새로운 도구 통합은 저장소의 이슈 트래커에서 확인할 수 있습니다.