안드로이드 앱(Kotlin|Java)/[2025~] 안드로이드 앱
Part0_Ch04_04 detekt 적용해보기
heylo
2025. 2. 3. 11:54
detekt
- 정적 프로그램 분석 (static program analysis) : 프로그램을 실행하지 않고, 소프트웨어를 분석하는 것
- ktlint VS detekt
- ktlint 는 코딩 컨벤션을 중점적으로 본고, detekt 는 코드의 전체적인 퀄리티를 높이기 위한 분석을 수행
- 예를 들면, 메서드 길이가 너무 길다거나, 메서드의 depth 가 너무 깊다거나 등의 분석을 수행함
코딩 컨벤션: naming rule 이 잘 맞는지 등
detekt Configuration File | detekt
detekt uses a YAML style configuration file for various things:
detekt.dev
build.gradle (app) 설정
...
configurations {
detekt
}
depeendencies {
detekt 'io.gitlab.arturbosch.detekt:detekt-cli:1.22.0-RC3'
...
}
...
task detekt(type: JavaExec) {
mainClass.set("io.gitlab.arturbosch.detekt.cli.Main")
classpath = configurations.detekt
def input = "$projectDir"
def exclude = ".*/build/.*,.*/resources/.*"
def config = "$rootDir/detekt.yml"
def params = [ '-i', input, '-ex', exclude, '-c', config]
args(params)
}
1) 결과
퀄리티가 좋은 코드라면…
아래와 같이 카멜 규칙을 따르지 않고, depth가 깊은 코드라면
Depth 가 너무 깊다.
Empty block 이다.
function naming 이 카멜규칙을 따르지 않았다.
정적으로 알려줌.
2) detekt configuration file 구성
build.gradle (:app)
detekt.yml
내용 무