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

내용 무