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 静态分析工具
你还在闻它吗?:Flauzino 等人的 Java 和 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 - 阈值和样式规则的想法