Gradle Spotless中ktlint配置userData([android:"true"])的作用
ktlint('0.43.2').userData([android: "true"]) 中android: "true"参数说明 你在Spotless插件里给ktlint传入的android: "true"是ktlint的运行时配置项,作用是开启Android专属代码风格模式,具体含义和生效规则如下:
核心含义
ktlint默认遵循Kotlin官方的通用社区代码风格规范,开启这个配置后,ktlint的代码校验、自动格式化逻辑会完全切换到Android官方制定的Kotlin编码规则,和Android Studio默认的Android Kotlin代码格式化规则对齐,避免本地IDE格式化后的代码,在CI环境跑Spotless校验时出现格式冲突报错。
生效规则
- 规则优先级:Android风格规则会覆盖ktlint默认的Kotlin通用规则,两者出现冲突时以Android规则为准,比如参数换行后的对齐方式、lambda表达式折行逻辑、注解摆放位置、尾逗号处理等细节规则,都会适配Android开发的通用习惯
- 场景兼容:会自动识别Android项目的常见代码场景,不会对Android开发约定俗成的写法(比如Compose布局函数的参数排列、资源引用写法)误报格式错误
- 作用范围:该配置仅对当前kotlin格式化任务下,被
target '**/*.kt'规则选中、且没有被targetExclude排除的Kotlin文件生效,不会影响项目内Java、XML等其他类型文件的格式校验逻辑 - 版本绑定:规则集和你指定的ktlint版本强绑定,你用的0.43.2版本对应的Android规则,和该版本发布时Android Studio的默认Kotlin格式化规则完全对齐,后续如果升级ktlint版本,对应的Android规则也会同步更新,不会随本地IDE版本自动变动
注意:这个配置不会自动排除构建目录下的自动生成代码,你配置里写的
targetExclude("$buildDir/**/*.kt")、targetExclude('bin/**/*.kt')规则需要保留,否则BuildConfig、R类这类AGP自动生成的Kotlin文件还是会被纳入校验范围,出现不必要的格式报错。
内容的提问来源于stack exchange,提问作者Fathimath Aashina
相关产品推荐
相关产品推荐

