Kotlin 프로그래밍 언어 용 정적 코드 분석 도구 인 detekt를 만나보세요 . 설치 가이드, 규칙 설명, 구성 옵션 등을 알아보려면 프로젝트 웹사이트를 방문하세요.
Kotlin 프로젝트에 대한 코드 냄새 분석.
고도로 구성 가능한 규칙 세트.
새로운 문제가 발생하지 않도록 하면서 레거시 프로젝트의 기존 문제를 억제하는 기준선을 생성합니다.
@Suppress
주석을 사용하여 소스 파일의 문제를 억제합니다.
다양한 보고서 형식 지원: HTML, Markdown, SARIF, XML(Checkstyle) 및 사용자 정의 보고서.
사용자 정의 규칙 세트 및 보고서로 탐지 기능을 확장합니다.
코드 줄, 순환적 복잡성 및 코드 냄새 수를 기반으로 하는 복잡성 보고서입니다.
Gradle 플러그인을 사용하여 Gradle과 자사 통합.
탐지에 더 많은 규칙과 기능을 추가하는 타사 플러그인 커뮤니티입니다.
변경 로그 및 마이그레이션 가이드
사용 가능한 CLI 옵션
규칙 세트 및 규칙 설명
사용자 정의 규칙 작성 및 탐지 확장
코드의 문제 억제
기준 파일을 통해 문제 억제
감지 구성
샘플 Gradle 통합 예:
멀티 프로젝트(Kotlin DSL)
단일 프로젝트(Groovy DSL)
단일 프로젝트(비공식 Maven 플러그인)
컬 -sSLO https://github.com/detekt/detekt/releases/download/v[버전]/detekt-cli-[버전]-all.jar java -jar detekt-cli-[버전]-all.jar --help
여기에서 decekt를 설치하는 다른 방법을 찾을 수 있습니다.
플러그인 { id("io.gitlab.arturbosch.detekt") 버전 "[버전]"} 저장소 { 메이븐센트럴() } 감지 { buildUponDefaultConfig = true // defaultsallRules = false // 사용 가능한 모든(불안정한 경우에도) 활성화 rule.config.setFrom("$projectDir/config/detekt.yml") // 실행할 규칙을 정의하는 사용자 정의 구성을 가리키고 기본 동작 기준을 덮어씁니다. = file("$projectDir/config/baseline.xml") // 감지 기능을 도입하기 전에 문제를 억제하는 방법} tasks.withType().configureEach { 보고서 { html.required.set(true) // 구조 및 코드를 사용하여 브라우저에서 결과를 관찰합니다. snippetsxml.required.set(true) // 주로 Jenkinssarif.required.set(true)와 같은 통합을 위한 형식과 같은 체크스타일 // 표준화된 SARIF 형식( https://sarifweb.azurewebsites.net/) GitHub Code Scanningmd.required.set(true) // 간단한 Markdown 형식과의 통합을 지원합니다.} }// Groovy DSLtasks.withType(Detekt).configureEach { jvmTarget = "1.8"} Tasks.withType(DetektCreateBaselineTask).configureEach { jvmTarget = "1.8"}// 또는// Kotlin DSLtasks.withType ().configureEach { jvmTarget = "1.8"} tasks.withType ().configureEach { jvmTarget = "1.8"}
릴리스는 Maven Central을, 스냅샷은 Sonatype을 참조하세요.
SNAPSHOT 버전을 사용하려면 이 설명서 페이지에서 자세한 정보를 찾을 수 있습니다.
Gradle 6.8.3+가 최소 요구사항입니다. 그러나 다른 도구 권장 버전과 함께 권장되는 버전은 다음과 같습니다.
감지 버전 | 그래들 | 코틀린 | AGP | Java 대상 레벨 | JDK 최대 버전 |
---|---|---|---|---|---|
1.23.7 | 8.10 | 2.0.10 | 8.5.2 | 1.8 | 21 |
이전 감지 버전에 대한 권장 버전 목록이 여기에 나열되어 있습니다.
detekt 자체는 Gradle 구성에 쉽게 추가할 수 있는 formatting
규칙 세트로 ktlint에 대한 래퍼를 제공합니다.
종속성 { detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:[버전]") }
마찬가지로, 감지에서 감지에 사용할 수 있는 추가 규칙 세트가 있습니다.
종속성 { detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:[버전]") detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ruleauthors:[버전]") }
더 많은 정보를 원하시면 Detekt Marketplace를 방문하세요.
마찬가지로 사용자 정의 확장을 tekt에 추가할 수 있습니다.
기여 보기
디텍트에 기여해주신 모든 분들께 감사드립니다!
에서 언급했듯이 ...
Detectt 2.0 이상으로!
droidcon London 2021 - 감지 - 연합 상태
KotlinConf 2018 - 안전한(r) Kotlin 코드 - Marvin Ramin의 Kotlin용 정적 분석 도구
droidcon NYC 2018 - Kotlin용 정적 코드 분석
코드 품질 도구에 대한 Kotlin - 작성자: @vanniktech 슬라이드 프레젠테이션
워크플로에 감지 통합
Kotlin 코드 품질 확인
Kotlin 정적 분석 도구
아직도 냄새가 나나요?: Flauzino et al.의 Java와 Kotlin 언어 비교 연구.
Detekt로 소프트웨어 안티패턴 방지
통합:
IntelliJ 통합
SonarQube 통합
TCA(텐센트 코드분석) 통합
코디시
Error Prone, Checkstyle, PMD, CPD, Lint, Detekt & Ktlint를 구성하는 Gradle 플러그인
Violations Lib은 정적 코드 분석과 같은 보고서 파일을 구문 분석하기 위한 Java 라이브러리입니다.
Sputnik은 정적 코드 검토를 위한 무료 도구이며 감지 기능을 지원합니다.
Detekt CLI를 래핑하는 Detekt Maven 플러그인
Detekt CLI를 래핑하는 Detekt Bazel 플러그인
GitHub PR 확인 및 위반 자동 주석 작성을 용이하게 하는 Gradle 플러그인
코드팩터
GitHub 작업: 모두 감지
GitHub Action: 감지 설정
타사의 사용자 정의 규칙 및 보고서는 Detekt Marketplace 에서 찾을 수 있습니다.
JetBrains - IntelliJ + Kotlin 만들기
PMD & Checkstyle & ktlint - 임계값 및 스타일 규칙에 대한 아이디어