Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
S

spotless

> 前端框架
Open source

Keep your code spotless

5.6K stars0 likes0 views
WebsiteGitHub

About

Keep your code spotless

Spotless: Keep your code spotless

Spotless can format <antlr | c | c# | c++ | css | flow | graphql | groovy | html | java | javascript | json | jsx | kotlin | less | license headers | markdown | objective-c | protobuf | python | scala | scss | shell | sql | typeScript | vue | yaml | anything> using <gradle | maven | sbt | anything>.

You probably want one of the links below:

❇️ Spotless for Gradle (with integrations for VS Code and IntelliJ)

user@machine repo % ./gradlew build
:spotlessJavaCheck FAILED
  The following files had format violations:
  src\main\java\com\diffplug\gradle\spotless\FormatExtension.java
    -\t\t····if·(targets.length·==·0)·{
    +\t\tif·(targets.length·==·0)·{
  Run './gradlew spotlessApply' to fix these violations.
user@machine repo % ./gradlew spotlessApply
:spotlessApply
BUILD SUCCESSFUL
user@machine repo % ./gradlew build
BUILD SUCCESSFUL

❇️ Spotless for Maven

user@machine repo % mvn spotless:check
[ERROR]  > The following files had format violations:
[ERROR]  src\main\java\com\diffplug\gradle\spotless\FormatExtension.java
[ERROR]    -\t\t····if·(targets.length·==·0)·{
[ERROR]    +\t\tif·(targets.length·==·0)·{
[ERROR]  Run 'mvn spotless:apply' to fix these violations.
user@machine repo % mvn spotless:apply
[INFO] BUILD SUCCESS
user@machine repo % mvn spotless:check
[INFO] BUILD SUCCESS

❇️ Spotless for SBT (external for now)

Other build systems

How it works (for potential contributors)

Ideally, a code formatter can do more than just find formatting errors - it should fix them as well. Such a formatter is just a Function<String, String>, which returns a formatted version of its potentially unformatted input.

It's easy to build such a function, but there are some gotchas and lots of integration work (newlines, character encodings, idempotency, git ratcheting, and build-system integration). Spotless tackles those for you so you can focus on just a simple Function<String, String> which can compose with any of the other formatters and build tools in Spotless' arsenal.

Current feature matrix

Feature / FormatterStep gradle maven sbt (Your build tool here) Automatic idempotency safeguard :+1: :+1: :+1: :white_large_square: Misconfigured encoding safeguard :+1: :+1: :+1: :white_large_square: Toggle with spotless:off and spotless:on :+1: :+1: :white_large_square: :white_large_square: Ratchet from origin/main or other git ref :+1: :+1: :white_large_square: :white_large_square: Define line endings using git :+1: :+1: :+1: :white_large_square: Fast incremental format and up-to-date check :+1: :+1: :white_large_square: :white_large_square: Fast format on fresh checkout using buildcache :+1: :white_large_square: :white_large_square: :white_large_square: generic.EndWithNewlineStep :+1: :+1: :white_large_square: :white_large_square: generic.IndentStep :+1: :+1: :white_large_square: :white_large_square: generic.Jsr223Step :white_large_square: :+1: :white_large_square: :white_large_square: generic.LicenseHeaderStep :+1: :+1: :+1: :white_large_square: generic.NativeCmdStep :+1: :+1: :white_large_square: :white_large_square: generic.ReplaceRegexStep :+1: :+1: :white_large_square: :white_large_square: generic.ReplaceStep :+1: :+1: :white_large_square: :white_large_square: generic.TrimTrailingWhitespaceStep :+1: :+1: :white_large_square: :white_large_square: antlr4.Antlr4FormatterStep :+1: :+1: :white_large_square: :white_large_square: biome.BiomeStep :+1: :+1: :white_large_square: :white_large_square: cpp.ClangFormatStep :+1: :white_large_square: :white_large_square: :white_large_square: cpp.EclipseFormatterStep :+1: :+1: :+1: :white_large_square: go.GofmtFormatStep :+1: :white_large_square: :white_large_square: :white_large_square: gherkin.GherkinUtilsStep :+1: :+1: :white_large_square: :white_large_square: groovy.GrEclipseFormatterStep :+1: :+1: :+1: :white_large_square: java.GoogleJavaFormatStep :+1: :+1: :+1: :white_large_square: java.ImportOrderStep :+1: :+1: :+1: :white_large_square: java.PalantirJavaFormatStep :+1: :+1: :white_large_square: :white_large_square: java.PrinceOfSpaceStep :+1: :+1: :white_large_square: :white_large_square: java.RemoveUnusedImportsStep :+1: :+1: :+1: :white_large_square: java.ExpandWildcardImportsStep :+1: :white_large_square: :white_large_square: :white_large_square: java.ForbidWildcardImportsStep :+1: :+1: :+1: :white_large_square: java.ForbidModuleImportsStep :+1: :+1: :white_large_square: :white_large_square: java.ShortenFullyQualifiedTypesStep :+1: :+1: :white_large_square: :white_large_square: java.EclipseJdtFormatterStep :+1: :+1: :+1: :white_large_square: java.FormatAnnotationsStep :+1: :+1: :white_large_square: :white_large_square: java.CleanthatJavaStep :+1: :+1: :white_large_square: :white_large_square: java.TableTestFormatterStep :+1: :+1: :white_large_square: :white_large_square: json.gson.GsonStep :+1: :+1: :white_large_square: :white_large_square: json.JacksonJsonStep :+1: :+1: :white_large_square: :white_large_square: json.JsonSimpleStep :+1: :+1: :white_large_square: :white_large_square: json.JsonPatchStep :+1: :+1: :white_large_square: :white_large_square: kotlin.KtLintStep :+1: :+1: :+1: :white_large_square: kotlin.KtfmtStep :+1: :+1: :white_large_square: :white_large_square: kotlin.DiktatStep :+1: :+1: :white_large_square: :white_large_square: markdown.FreshMarkStep :+1: :white_large_square: :white_large_square: :white_large_square: markdown.FlexmarkStep :+1: :+1: :white_large_square: :white_large_square: npm.EslintFormatterStep :+1: :+1: :white_large_square: :white_large_square: npm.PrettierFormatterStep :+1: :+1: :white_large_square: :white_large_square: npm.TsFmtFormatterStep :+1: :+1: :white_large_square: :white_large_square: pom.SortPomStep :+1: :+1: :white_large_square: :white_large_square: protobuf.BufStep :+1: :white_large_square: :white_large_square: :white_large_square: [python.BlackStep](lib/src/main/java/com/diffplug/spotless/python/BlackSte

GitHub Issues· 0 open

View all on GitHub

No open issues yet, or sync has not completed.

Highlights

  • •Java
  • •css
  • •formatter
  • •gradle
  • •groovy

> Tags

Javacssformattergradlegroovy

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category前端框架
PricingOpen source

> Related tools

R
React
用于构建用户界面的 JavaScript 库
V
Vue.js
渐进式 JavaScript 框架
N
Next.js
基于 React 的全栈 Web 框架