detect (정적 프로그램 분석)
Summary
- 정적 프로그램 분석 (static program analysis) : 프로그램을 실행하지 않고, 소프트웨어를 분석하는 것
- ktlint VS detekt
- ktlint는 코드 컨벤션을 중점적으로 보고, detekt는 코드의 전체적인 퀄리티를 높이기 위한 분석을 수행
- 예를 들면, 메서드 길이가 너무 길다거나, 메서드의 depth가 너무 깊다거나 등의 분석을 수행함
- https://detekt.dev/
사용 방법
1.detekt에서 Getting Started
> Run detect using Gradle Task
참고
2.AndroidStudio 에서 build.gradle(:app)에 아래 코드 추가 후 Sync now…
클릭
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
configurations {
detekt
}
dependencies {
detekt 'io.gitlab.arturbosch.detekt:detekt-cli:1.22.0'
}
task detekt(type: JavaExec) {
mainClass.set("io.gitlab.arturbosch.detekt.cli.Main")
classpath = configurations.detekt
def input = "$projectDir"
def exclude = ".*/build/.*,.*/resources/.*"
def params = [ '-i', input, '-ex', exclude]
args(params)
}
3.build.gradle(:app)에 task detekt의 왼쪽에 있는 재생 버튼 클릭하여 Run ‘앱 이름’
으로 실행
1

Detekt Config 파일 추가하기
잡고싶지 않은 에러는 config 파일에서 active: false로 잡지않게 할 수 있음
1.Android Studio에서 프로젝트 단으로 변경 후 최상위 디렉토리에사 마우스 우클릭 > New > File 클릭
1

2.file 이름은 detekt.yml
로 생성 후 config file의 내용을 복사해서 붙여넣기
1

3.build.gradle(:app)에서 task detekt에 config를 정의하는 변수 추가하고 파라미터로 넘기기
1
2
3
4
5
6
7
8
9
10
11
12
task detekt(type: JavaExec) {
mainClass.set("io.gitlab.arturbosch.detekt.cli.Main")
classpath = configurations.detekt
def input = "$projectDir"
def exclude = ".*/build/.*,.*/resources/.*"
<u>def config = "$rootDir/detekt.yml"</u>
def params = [ '-i', input, '-ex', exclude, <u>'-c', config</u>]
args(params)
}
결과
에러
에러가 있으면 해당 에러가 발생하는 코드의 위치와 원인을 알려준다.
성공
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.