如何用Spotless规范Android项目代码风格:PhotoAffix完整教程
如何用Spotless规范Android项目代码风格PhotoAffix完整教程【免费下载链接】photo-affix Stitch your photos together vertically or horizontally easily!项目地址: https://gitcode.com/gh_mirrors/ph/photo-affixPhotoAffix 是一款开源的 Android 图片拼接应用可以把多张照片轻松竖向或横向拼成长图。本文以它为例带你完整走一遍用Spotless规范 Java / Kotlin 代码风格的实战流程——从引入插件到配置规则新手也能照做。为什么用 Spotless 规范 Android 代码风格代码风格不统一是团队协作中最常见的问题缩进 2 还是 4import 顺序谁说了算文件末尾要不要换行Spotless 是 Android 社区事实上的代码格式化标准它的核心优势✅一键格式化跑一条命令全项目代码自动统一✅零心理负担格式化交给工具Code Review 只看逻辑✅CI 友好可以挂到持续集成里风格不合格直接拦截✅多语言支持Java、Kotlin、Groovy、XML、SQL 都能管第一步在 build.gradle 引入 Spotless 插件在根目录 build.gradle 的buildscript中声明插件依赖classpath com.diffplug.spotless:spotless-plugin-gradle: versions.spotlessPlugin版本号不写死在build.gradle里而是集中放在 dependencies.gradle 中管理spotlessPlugin : 3.18.0小技巧所有依赖版本集中到一个文件管理升级时只改一处这是 PhotoAffix 值得借鉴的工程习惯。第二步编写核心规则文件 spotless.gradle整个风格规则集中在 spotless.gradle 一个文件里只有不到 20 行apply plugin: com.diffplug.gradle.spotless spotless { java { target **/*.java trimTrailingWhitespace() removeUnusedImports() googleJavaFormat() endWithNewline() } kotlin { target **/*.kt ktlint().userData([indent_size: 2, continuation_indent_size: 2]) licenseHeaderFile ../spotless.license.kt trimTrailingWhitespace() endWithNewline() } }逐条拆解这套组合拳规则作用googleJavaFormat()Java 代码采用 Google Java 官方风格ktlint()Kotlin 代码采用社区主流 linter 规则indent_size: 2强制 2 空格缩进Android 惯例trimTrailingWhitespace()清除行尾多余空格removeUnusedImports()自动删除没用的 importendWithNewline()文件末尾必须有一个换行licenseHeaderFile每个源码文件自动加上许可头部第三步用 licenseHeaderFile 自动加 Apache 许可头许可头模板单独放在 spotless.license.kt 中内容是标准的 Apache License 2.0 声明。配置生效后所有 Kotlin 文件开头都会被自动补上许可头比如 App.kt/** * Designed and developed by Aidan Follestad (afollestad) * * Licensed under the Apache License, Version 2.0 (the License); * ... */你完全不需要手动复制粘贴——新建文件跑一次格式化就自动加好。两条命令搞定日常使用Spotless 的使用只需要记住两条 Gradle 命令# 自动修复全项目代码风格开发时随手跑 ./gradlew spotlessApply # 只检查不修改发现不合规就报错CI 流水线用 ./gradlew spotlessCheck推荐工作流写代码时随便写提交前跑一次spotlessApplyCI 上用spotlessCheck兜底拦截。多模块项目一套规则覆盖 6 个子模块PhotoAffix 是个典型的多模块 Android 项目settings.gradle 中定义了 6 个模块include :app, :viewcomponents, :prefs, :utilities, :dialogs, :engine由于target **/*.kt用的是全项目通配符根目录这一份spotless.gradle就能同时管住 engine/图片拼接核心引擎、dialogs/设置对话框、utilities/工具类等所有模块——规则一处定义处处生效这正是 Spotless 在多模块项目里省心的地方。总结PhotoAffix 的 Spotless 配置速查文件职责build.gradle声明 Spotless 插件依赖dependencies.gradle统一管理插件版本号spotless.gradleJava Kotlin 风格规则spotless.license.kt源码文件许可头模板3 步落地清单①build.gradle加插件 → ② 仿照上面写好spotless.gradle→ ③ 跑./gradlew spotlessApply。从此代码风格之争永久结案。✍️【免费下载链接】photo-affix Stitch your photos together vertically or horizontally easily!项目地址: https://gitcode.com/gh_mirrors/ph/photo-affix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考