关于Kotlin静态代码检测⼯具detekt的说明
介绍
是⼀款 kotlin 代码静态检测⼯具,他对标的是 Java 静态检测⼯具 checkStyle。detekt 有着检测快、功能强、可配置⾼等特点,可以帮助开发者尽早的发现代码中的坏⽓味。
除了 还有⼀种成熟的⽅案:。 但 ktlint 的会按照内置规则修改代码,这是不可容忍的。
虽然 detekt 配置起来复杂⼀些,但是更加灵活,可以保障团队的代码风格⼀致,并提前发现不良代码。另外,detekt 的规则是 ktlint 的超集可以通过⼀下配置添加
detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:[version]"
开始
添加资源
在项⽬根⽬录创建 config ⽂件夹并
⽂件夹内有 checkStyle 的配置,按需拷贝,但 checkStyle 需要特殊配置,本⽂不描述
注意,l 的⽂件路径必须是 config/l 否则配置⽂件不⽣效
添加 Gradle Plugin
⽬前 detekt 的最近版本是 1.10.0,
如果是 Android 项⽬在 adle(位于根⽬录的)的相应代码块中添加如下内容
buildscript {
repositories {
// plugin 地址
jcenter()
}
dependencies {
// 添加 plugin
classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.10.0"
}
}
allprojects {
// 为所有项⽬应⽤ detekt,detekt 将⾃动识别 kt 代码做检查
apply plugin:'io.gitlab.arturbosch.detekt'
}
如果是 Gradle 构建的其他项⽬在 adle 相应代码块中添加如下内容
plugins {
id 'io.gitlab.arturbosch.detekt' version '1.1.0'
}
上述步骤完毕后在 adle 末尾添加 detekt gradle ⽂件
apply from: "./adle”
添加 ktlint 拓展规则集 (可选)
⽬前 detekt 的最近版本是 1.10.0,
如果是 Android 项⽬,在需要开启检测的模块中添加如下配置:
dependencies {
.
.....
detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:[version]"
}
如果是 Gradle 构建的其他项⽬,继续在 adle 相应代码块中添加:
dependencies {
......
detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:[version]"
}
添加 git hook
在 commit 代码时检测规则与质量是最好的时机
具体⽂件地址: config/detekt/premit
#!/usr/bin/env bash
#
# ⽅案⼀: arturbosch.github.io/detekt/git-pre-commit-hook.html
# 将该⽂件放到project根⽬录的.git/hooks/⽬录下,执⾏ chmod +x pre-commit 为脚本添加可执⾏权限即可,
# 之后的每次commit都会先执⾏ checkstyle task 进⾏代码检查
#
# ⽅案⼆: stackoverflow/questions/427207/can-git-hook-scripts-be-managed-along-with-the-repository # 从git 2.9开始, 可以设置:core.hooksPath了.
# 可以在repo⾥⾯添加⼀个⽬录hooks, 然后把git hooks⽂件放进去track.
# 在命令⾏跑:
# git config core.hooksPath [⽂件路径]
# 把hook⽂件的⽬录设置成指定⽬录就好了.
echo"执⾏ kotlin 代码规范检查..."
./gradlew detekt
EXIT_CODE=$?
if[$EXIT_CODE -ne 0 ];then
echo"***********************************************"
echo"                Detekt failed                "
echo" Please fix the above issues before committing "
echo"***********************************************"
exit$EXIT_CODE
figit常用指令
#echo "执⾏ checkstyle 任务 "
#./gradlew checkstyle
如果 git 版本 > 2.9,在项⽬更⽬录下执⾏
git config core.hooksPath ./config
执⾏
提交代码时将会触发 hook ,开始检测代码,如果有不良代码提交将被中断,按提⽰修正代码⽅可提交
错误提⽰
排除
⽅式1:
对于上图的 ComplexCondition 错误,如果想要排除掉可以使⽤@Suppress 注解,并注明要排除的规则,如果有多个规则⽤逗号分割。
⽅式2:
配置⽂件说明
位于 config/l 的配置⽂件已经设置了常⽤规则,直接使⽤就可以。每个规则的具体说明请参见:
对 detakt 的 Gradle 配置进⾏了抽取,详情请见 config/adle
detekt {
failFast =true// fail build on any finding
config =files("config/l")// 规则配置⽂件,必须是此路径,否者不⽣效
buildUponDefaultConfig =true
//输出形式
reports {
}
}
// Groovy dsl
tasks.detekt.jvmTarget ="1.8"
如果开启了 html 输出结果在模块的 build ⽂件夹下

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。