一款 Python 代码格式化工具,可按可配置的风格自动重排源代码。
diffplug/spotless
面向 Gradle 和 Maven 的构建插件,可统一运行多种语言和文件类型的代码格式化工具。
- Star
- 5,720
- Fork
- 565
- 未关闭 Issue
- 251
- 最近提交
- 5天前
这是什么?
Spotless 是一个构建工具插件,可对项目源码执行代码格式化,并在文件未达到格式要求时让构建失败。它支持 Gradle 和 Maven,SBT 插件由外部维护。运行 spotlessApply 可自动修复不规范的文件,运行 spotlessCheck 则只做检查,便于在 CI 中强制统一代码风格。
它覆盖的语言包括 Java、Kotlin、Groovy、Scala、JavaScript、TypeScript、SQL、YAML、Markdown、Python、C++ 和 Shell 等。项目封装了 google-java-format、ktlint、Prettier、Black、clang-format 等常用格式化工具,并提供正则替换、去除行尾空白、许可证头、执行任意命令等通用步骤。
此外,Spotless 处理了集成中的细节问题,包括幂等性检查、编码与换行符处理,支持基于 Git 只格式化变更文件(ratchet),并兼容 Gradle 构建缓存和配置缓存。
核心功能
- 01通过 spotlessCheck 和 spotlessApply 任务检查并自动修复格式。
- 02支持 Java、Kotlin、Groovy、Scala、JavaScript、TypeScript、SQL、YAML、Markdown 等多种语言。
- 03封装 google-java-format、ktlint、Prettier、Black、clang-format 等常用格式化工具。
- 04可基于 Git 引用(如 origin/main)只处理发生变化的文件。
- 05提供正则替换、去除行尾空白、许可证头等通用格式化步骤。
适用场景
- 在 CI 中统一多语言 Java 或 Kotlin 单体仓库的代码风格。
- 本地开发时只格式化当前分支相对主干有改动的文件。
- 在构建中为所有源文件统一添加许可证头或调整导入顺序。
- 用同一套工具同时格式化 SQL、YAML、Markdown 与应用代码。
快速上手
- 1
按照 plugin-gradle 或 plugin-maven 指南,将 Spotless 插件添加到你的 Gradle 或 Maven 构建中
- 2
使用 Gradle 应用格式化
./gradlew spotlessApply - 3
使用 Maven 应用格式化
mvn spotless:apply
使用前须知
- 官方支持仅限 Gradle 和 Maven;SBT 集成为外部项目。
- 功能和格式化器的支持因构建工具而异,部分步骤只能在 Gradle 上使用。
收录于专题
标签
常见问题
- spotless 是什么?
- 面向 Gradle 和 Maven 的构建插件,可统一运行多种语言和文件类型的代码格式化工具。 Spotless 是一个构建工具插件,可对项目源码执行代码格式化,并在文件未达到格式要求时让构建失败。它支持 Gradle 和 Maven,SBT 插件由外部维护。运行 spotlessApply 可自动修复不规范的文件,运行 spotlessCheck 则只做检查,便于在 CI 中强制统一代码风格。
- spotless 可以免费使用吗?用的什么许可证?
- spotless 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- spotless 还在维护吗?
- 活跃维护中。spotless 最近一次提交是在 2026年11月2日。
- spotless 适合用来做什么?
- 在 CI 中统一多语言 Java 或 Kotlin 单体仓库的代码风格。 本地开发时只格式化当前分支相对主干有改动的文件。 在构建中为所有源文件统一添加许可证头或调整导入顺序。 用同一套工具同时格式化 SQL、YAML、Markdown 与应用代码。
- spotless 怎么安装和运行?
- 按照 plugin-gradle 或 plugin-maven 指南,将 Spotless 插件添加到你的 Gradle 或 Maven 构建中 使用 Gradle 应用格式化: ./gradlew spotlessApply 使用 Maven 应用格式化: mvn spotless:apply
- 在哪里获取 spotless?
- 源代码和安装说明在 GitHub 上:https://github.com/diffplug/spotless
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Ruby 静态代码分析与格式化工具,依据社区 Ruby 风格指南检查代码,并可自动修复多数问题。
Black 是一款风格固定、结果确定的 Python 代码格式化工具,直接改写文件并尽量产生最小差异。
一款自动修复 PHP 代码以符合编码规范(如 PER-CS、Symfony)的命令行工具。
一个自动排序并分组 Python import 语句的命令行工具和库。
一个 Gradle 插件,可将 Java、Kotlin 和 Android 库(含源码与 javadoc)发布到 Maven Central 或其他 Nexus 仓库。