Detekt - kotlin 静态代码检测工具配置及使用

说明:网络上的资料要么过时,要么不全;因此自己通过实践,重新整理了一份使用攻略

作者:一哥的马甲

创建时间: 2020年09月06日

开发环境:Mac + Android Studio

简介

Detekt 是 kotlin 的静态代码检测工具,有丰富的配置供开发者选择。本文只介绍基本配置和使用,剩下的内容请开发者自行探索

项目地址点这里


配置

打开项目的根配置build.gradle,配置插件

注意:Gradle 版本要大于 5.4

buildscript {
    repositories {
            jcenter()
    }
}
// 1. 添加 detekt 插件
plugins {
    id("io.gitlab.arturbosch.detekt").version("1.13.1")
}

// 2. 添加 detekt 配置文件
detekt {
    toolVersion = "1.13.1"
    config = files("config/detekt/detekt.yml")
    // failFast = true // fail build on any finding
    buildUponDefaultConfig = true // preconfigure defaults

    reports {
        reports {
            xml {
                enabled = true
                destination = file("path/to/destination.xml")
            }
            html {
                enabled = true
                destination = file("path/to/destination.html")
            }
            txt {
                enabled = true
                destination = file("path/to/destination.txt")
            }
        }
    }
}

同步项目,运行 ./gradlew tasks,可以看到detekt命令则表示配置成功

运行命令 ./gradlew detektGenerateConfig 生成默认的检测配置文件,生成位置在项目根目录 config 文件下。可以手动修改生成的配置文件定制检测规则

在需要使用检测的 module 中的build.gradle配置中加上

// 配置 detekt 插件
apply plugin: 'io.gitlab.arturbosch.detekt'

也可以在根目录的build.gradle中这样配置使检测全局生效

allprojects {
    repositories {
        ... ...
    }
    
    // 这样配置即可全局生效
    apply plugin: 'io.gitlab.arturbosch.detekt'
}

使用

直接在命令行运行 ./gradlew detekt 即可,执行结束后会将检测结果显示出来;

result1

此时也会在项目的/build/report下生成可视化的文档(xml/html/txt)也可以点开查看
result2


添加 Git Hook

可以在每次提交之前通过 hook 自动运行检测脚本;在项目的.git/hooks文件夹下touch pre-commit,然后填入脚本

项目的.git/hooks文件夹下有一些 samples ,新建脚本必须与这些 samples 文件名一致(可以省略后缀)

echo "✅  开始执行 kotlin 代码检查"

./gradlew detekt

result=$?

if [ "$result" = 0 ] ; then    
   echo "✅  代码检查完毕,没有问题"     
   exit 0
else
   echo "❎  代码检查完毕,发现问题,请修复后重新提交"
   echo "❎  请到项目的 /build/report 目录下查看可视化文档"  
   exit 1
fi

保存,并将文件设置为可执行文件 chmod +x pre-commit。这样每次提交之前都会运行检测脚本了

如果不想运行 hook 可以使用 git commit --no-verify


共享 Git Hook

使用 Git (version >= 2.9)映射功能

在项目根目录下新建文件夹hooks,然后将pre-commit文件放到文件夹中

执行命令 git config core.hooksPath hooks 即可


你可能感兴趣的:(Detekt - kotlin 静态代码检测工具配置及使用)