代码质量门禁:Lint Detekt集成技巧 - 第4节
开发环境准备:把工具箱收拾利索
要搞代码质量门禁,第一步不是写规则,是先把环境搭稳。我个人习惯是,新项目开干前先花半小时把工具链理顺。别小看这一步,我在项目里见过太多人,因为Gradle版本对不上、Kotlin插件冲突,一折腾就是一整天。
核心要点:一个干净、版本一致、可复现的开发环境,能帮你省掉80%的「这代码在我机器上能跑」的尴尬。
1. 安装Android Studio —— 选对版本很重要
说白了,Android Studio 就是咱们的主战场。我建议你直接用最新稳定版。别追预览版,除非你喜欢当小白鼠。
| 版本 | 推荐指数 | 备注 |
|---|---|---|
| Android Studio Hedgehog (2023.1.1) | ⭐⭐⭐⭐⭐ | 当前最稳,自带Kotlin 1.9.x |
| Android Studio Iguana (2023.2.1) | ⭐⭐⭐⭐ | 新特性多,但插件兼容性要确认 |
| 预览版 / Canary | ⭐⭐ | 不推荐用于生产项目 |
小技巧:装好后第一件事,打开 Preferences → Appearance & Behavior → System Settings → Updates,把自动更新关掉。你肯定不希望在项目冲刺时,IDE突然要你重启更新。
2. 配置Kotlin项目 —— 别让版本成了绊脚石
新建项目时,很多人直接点「Next」就过了。嗯,这里要注意,有几个选项一定要亲手确认。
// 在 build.gradle.kts (Project级别) 里
plugins {
// 指定Kotlin版本,和你的项目目标一致
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
// AGP版本不要乱升级
id("com.android.application") version "8.2.2" apply false
}
为什么会这样?因为Detekt和Lint的规则集,往往跟Kotlin编译器的版本绑定。我曾经有一次,团队里有人用了Kotlin 1.8.x,有人用了1.9.x,结果Detekt报的警告完全不同。从那以后,我要求所有成员必须用统一的版本。
- Kotlin版本:建议用1.9.x以上,对Detekt支持更好
- AGP版本:和Kotlin版本兼容就行,别追新
- 编译SDK:设为34(Android 14),兼容性更稳
注意:假如你在项目中混用了Java和Kotlin,记得显式配置 Java 版本。我曾经踩过坑,项目里Java 11写的模块,因为没设 targetCompatibility,编译直接炸了。
3. Gradle基础 —— 你得懂它,但不一定要精通
很多人对Gradle又爱又恨。我觉得你就把它想象成项目的「包工头」。它负责拉依赖、编译、打包。你只需要会下几个关键命令就行。
// 常用Gradle任务
./gradlew tasks // 查看所有可用任务
./gradlew lint // 跑Lint检查
./gradlew detekt // 跑Detekt检查
./gradlew assembleDebug // 打Debug包
./gradlew --daemon // 开启守护进程,加速构建
你想想看,如果连这些基础命令都不熟,后面集成质量门禁时,你会寸步难行。
我的习惯:在项目根目录写一个
.gradle/init.gradle.kts,把公共配置(比如仓库地址、插件版本)统一管理。这样换电脑或者加新人时,一句 git clone 就搞定。
4. 模拟器与真机调试 —— 别只在模拟器上跑
代码质量门禁不止检查语法,有些运行时的问题也得提前发现。我建议你至少有一台真机做调试。
- 模拟器:适合快速验证UI和基础逻辑
- 真机:必须,特别是涉及传感器、定位、多屏幕适配时
我曾经在模拟器上跑得好好的,一上真机就各种ANR(应用无响应)。后来发现是代码里用了过时的线程管理方式。Lint和Detekt能帮你提前发现这类问题,但前提是环境支持你跑这些检查。
整体流程一览
别嫌我啰嗦。把环境搭好,后面集成Lint和Detekt的时候,你会感谢现在的自己。下面是这一章的知识结构,画成图就是这样:
5. 实践环节:动手创建一个Kotlin项目
光说不练假把式。我建议你立刻打开Android Studio,照着下面这几步走一遍:
- 新建项目:选择「Empty Views Activity」,语言选Kotlin
- 检查Gradle版本:打开
gradle/wrapper/gradle-wrapper.properties,确认distributionUrl指向的版本是8.4以上 - 配置Detekt(提前尝鲜):在
build.gradle.kts (Module级别)里先加上Detekt插件声明,下一章我们会详细讲配置 - 运行Lint:终端输入
./gradlew lint,看看有没有报错
// 在 app/build.gradle.kts 里添加Detekt插件(预告)
plugins {
id("io.gitlab.arturbosch.detekt") version "1.23.5"
}
detekt {
config = files("$projectDir/config/detekt/config.yml")
}
注意:如果
./gradlew lint 跑不动,大概率是Gradle缓存问题。先执行 ./gradlew clean 再试。我曾经因为缓存没清,浪费了半天查一个根本不存在的错误。