detekt是一個用於Kotlin程式語言的靜態程式碼分析工具。造訪專案網站以取得安裝指南、規則說明、設定選項等。
對您的 Kotlin 專案進行程式碼氣味分析。
高度可配置的規則集。
產生基線以抑制遺留項目的現有問題,同時確保不會引入新問題。
使用@Suppress
註釋抑制原始檔中的問題。
支援不同的報告格式:HTML、Markdown、SARIF、XML(Checkstyle)和自訂報告。
使用自訂規則集和報告擴充功能檢測。
基於程式碼行數、圈複雜度和程式碼異味數量的複雜度報告。
透過我們的 Gradle 插件與 Gradle 進行第一方整合。
第三方插件社區,為 detekt 添加更多規則和功能。
變更日誌和遷移指南
可用的 CLI 選項
規則集和規則說明
編寫自訂規則並擴展檢測
抑製程式碼中的問題
透過基線文件抑制問題
配置檢測
Gradle 整合範例:
多項目(Kotlin DSL)
單一專案(Groovy DSL)
單一專案(非官方 Maven 插件)
curl -sSLO https://github.com/detekt/detekt/releases/download/v[版本]/detekt-cli-[版本]-all.jar java -jar detekt-cli-[版本]-all.jar --help
您可以在此處找到安裝 detekt 的其他方法
插件{ id("io.gitlab.arturbosch.detekt") 版本 "[版本]"} 儲存庫{ mavenCentral() } 檢測{ buildUponDefaultConfig = true // 預先設定defaultsallRules = false // 啟動所有可用的(甚至不穩定的)rules.config.setFrom("$projectDir/config/detekt.yml") // 指向自訂設定定義要執行的規則,覆寫預設行為基線= file("$projectDir/config/baseline.xml") // 在引入 detekt 之前抑制問題的一種方法} tasks.withType().configureEach { 報告{ html.required.set(true) // 透過結構和程式碼片段觀察瀏覽器中的結果xml.required.set(true) // checkstyle 格式主要用於 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。
如果您想使用快照版本,可以在此文件頁面上找到更多資訊。
Gradle 6.8.3+ 是最低要求。但是,推薦的版本以及其他工具推薦的版本是:
檢測版本 | 搖籃 | 科特林 | AGP | Java目標等級 | JDK最大版本 |
---|---|---|---|---|---|
1.23.7 | 8.10 | 2.0.10 | 8.5.2 | 1.8 | 21 |
此處列出了先前 detekt 版本的建議版本清單。
detekt 本身提供了 ktlint 的包裝器作為formatting
規則集,可以輕鬆添加到 Gradle 配置中:
依賴項{ detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:[版本]") }
同樣,detekt 也提供了額外的規則集可供 detekt 使用:
依賴項{ detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:[版本]") detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ruleauthors:[版本]") }
欲了解更多信息,請訪問 Detekt 市場。
同樣,可以將自訂擴充功能新增到 detekt。
請參閱貢獻
感謝所有為detekt做出貢獻的人!
正如在...中所提到的
Detekt 2.0 及更高版本!
droidcon London 2021 - 偵測 - 國情咨文
KotlinConf 2018 - Safe(r) Kotlin 程式碼 - Marvin Ramin 的 Kotlin 靜態分析工具
droidcon NYC 2018 - Kotlin 靜態程式碼分析
Kotlin 的程式碼品質工具 - by @vanniktech 幻燈片演示
將 detekt 整合到工作流程中
檢查 Kotlin 代碼的質量
Kotlin 靜態分析工具
你還在聞它嗎?
使用 Detekt 防止軟體反模式
整合:
智慧整合
SonarQube 集成
TCA(騰訊代碼分析)集成
葛達西
配置 Error Prone、Checkstyle、PMD、CPD、Lint、Detekt 和 Ktlint 的 Gradle 插件
Violations Lib 是一個用於解析報告文件(如靜態程式碼分析)的 Java 函式庫。
sputnik 是一個免費的靜態程式碼審查工具,並提供對 detekt 的支持
包裝 Detekt CLI 的 Detekt Maven 插件
封裝 Detekt CLI 的 Detekt Bazel 插件
Gradle 插件,有助於促進 GitHub PR 檢查和違規自動評論
程式碼因子
GitHub 操作:偵測全部
GitHub 操作:設定偵測
來自第三方的自訂規則和報告可以在我們的Detekt Marketplace上找到。
JetBrains - 創建 IntelliJ + Kotlin
PMD & Checkstyle & ktlint - 閾值與樣式規則的想法