Spotless は <antlr | をフォーマットできます。 c | c# | C++ | CSS |流れ |グラフql |グルーヴィー | html |ジャワ | JavaScript |ジェソン | jsx |コトリン |少ない |ライセンスヘッダー |値下げ |目的-c |プロトブフ |パイソン |スカラ | sss |シェル | SQL |タイプスクリプト |ビュー |ヤムル | <gradle | を使用して何か>メイブン | sbt |何でも>。
おそらく、以下のリンクのいずれかが必要になるでしょう。
user@machine repo % ./gradlew build:spotlessJavaCheck FAILED 次のファイルに形式違反がありました: srcmainjavacomdiffpluggradlespotlessFormatExtension.java -tt···if·(targets.length·==·0)·{ +ttif·(targets.length· ==·0)·{ これらの違反を修正するには、「./gradlew SpotlessApply」を実行してください。user@machine リポジトリ% ./gradlew SpotlessApply:spotlessApplyBUILD SUCCESSFULuser@machine リポジトリ % ./gradlew buildBUILD SUCCESSFUL
user@machine repo % mvn Spotless:check[ERROR] > 次のファイルに形式違反がありました:[ERROR] srcmainjavacomdiffpluggradlespotlessFormatExtension.java[ERROR] -tt....if·(targets.length·==·0)·{[エラー] +ttif·(targets.length·==·0)·{[エラー] 'mvn を実行してくださいこれらの違反を修正するには、「spotless:apply」を使用します。user@machine repo % mvn Spotless:apply[INFO] BUILD SUCCESSuser@machine repo % mvn Spotless:check[INFO] BUILD SUCCESS
理想的には、コード フォーマッタはフォーマット エラーを見つけるだけでなく、エラーを修正することもできます。このようなフォーマッタは単なるFunction<String, String>
であり、フォーマットされていない可能性のある入力のフォーマットされたバージョンを返します。
このような関数を構築するのは簡単ですが、注意点がいくつかあり、多くの統合作業 (改行、文字エンコーディング、冪等性、git ラチェット、ビルド システムの統合) が必要です。 Spotless はこれらの課題に対処するため、他のフォーマッタと組み合わせて Spotless の武器庫にあるツールを構築できる単純なFunction<String, String>
だけに集中できます。
機能 / フォーマッタステップ | グラドル | メイブン | sbt | (ビルドツールはここにあります) |
---|---|---|---|---|
自動冪等性保護機能 | ? | ? | ? | ⬜ |
エンコーディングの保護策が正しく設定されていない | ? | ? | ? | ⬜ |
spotless:off とspotless:on を切り替えます | ? | ? | ⬜ | ⬜ |
origin/main または他の git ref からのラチェット | ? | ? | ⬜ | ⬜ |
git を使用して行末を定義する | ? | ? | ? | ⬜ |
高速増分フォーマットと最新チェック | ? | ? | ⬜ | ⬜ |
buildcache を使用した新規チェックアウト時の高速フォーマット | ? | ⬜ | ⬜ | ⬜ |
generic.EndWithNewlineStep | ? | ? | ⬜ | ⬜ |
generic.IndentStep | ? | ? | ⬜ | ⬜ |
generic.Jsr223Step | ⬜ | ? | ⬜ | ⬜ |
generic.LicenseHeaderStep | ? | ? | ? | ⬜ |
generic.NativeCmdStep | ? | ? | ⬜ | ⬜ |
generic.ReplaceRegexStep | ? | ? | ⬜ | ⬜ |
generic.ReplaceStep | ? | ? | ⬜ | ⬜ |
generic.TrimTrailingWhitespaceStep | ? | ? | ⬜ | ⬜ |
antlr4.Antlr4FormatterStep | ? | ? | ⬜ | ⬜ |
biome.BiomeStep | ? | ? | ⬜ | ⬜ |
cpp.ClangFormatStep | ? | ⬜ | ⬜ | ⬜ |
cpp.EclipseFormatterStep | ? | ? | ? | ⬜ |
go.GofmtFormatStep | ? | ⬜ | ⬜ | ⬜ |
gherkin.GherkinUtilsStep | ? | ? | ⬜ | ⬜ |
groovy.GrEclipseFormatterStep | ? | ? | ? | ⬜ |
java.GoogleJavaFormatStep | ? | ? | ? | ⬜ |
java.ImportOrderStep | ? | ? | ? | ⬜ |
java.PalantirJavaFormatStep | ? | ? | ⬜ | ⬜ |
java.RemoveUnusedImportsStep | ? | ? | ? | ⬜ |
java.EclipseJdtFormatterStep | ? | ? | ? | ⬜ |
java.FormatAnnotationsStep | ? | ? | ⬜ | ⬜ |
java.CleanthatJavaStep | ? | ? | ⬜ | ⬜ |
json.gson.GsonStep | ? | ? | ⬜ | ⬜ |
json.JacksonJsonStep | ? | ? | ⬜ | ⬜ |
json.JsonSimpleStep | ? | ? | ⬜ | ⬜ |
json.JsonPatchStep | ? | ? | ⬜ | ⬜ |
kotlin.KtLintStep | ? | ? | ? | ⬜ |
kotlin.KtfmtStep | ? | ? | ⬜ | ⬜ |
kotlin.DiktatStep | ? | ? | ⬜ | ⬜ |
markdown.FreshMarkStep | ? | ⬜ | ⬜ | ⬜ |
markdown.FlexmarkStep | ? | ? | ⬜ | ⬜ |
npm.EslintFormatterStep | ? | ? | ⬜ | ⬜ |
npm.PrettierFormatterStep | ? | ? | ⬜ | ⬜ |
npm.TsFmtFormatterStep | ? | ? | ⬜ | ⬜ |
pom.SortPomStep | ? | ? | ⬜ | ⬜ |
protobuf.BufStep | ? | ⬜ | ⬜ | ⬜ |
python.BlackStep | ? | ⬜ | ⬜ | ⬜ |
rdf.RdfFormatterStep | ⬜ | ? | ⬜ | ⬜ |
scala.ScalaFmtStep | ? | ? | ? | ⬜ |
shell.ShfmtStep | ? | ? | ⬜ | ⬜ |
sql.DBeaverSQLFormatterStep | ? | ? | ? | ⬜ |
wtp.EclipseWtpFormatterStep | ? | ? | ⬜ | ⬜ |
yaml.JacksonYamlStep | ? | ? | ⬜ | ⬜ |
(フォーマッタの手順はこちら) | ⬜ | ⬜ | ⬜ | ⬜ |
多くのプロジェクトは、規模が大きくなるにつれて作業が難しくなります。 Spotless はこれまでよりも取り組みやすくなっています。その理由の 1 つは、貢献者に「マトリックスを埋める」ことを要求していないことです。 Bazel のサポートを追加したい場合は、使用しているフォーマッタが 1 つしかサポートされていない場合でも、喜んで PR を受け入れます。また、FooFormatter サポートを追加したい場合は、使用している 1 つのビルド システムのみをサポートする場合でも、喜んで PR を受け入れます。
誰かがフォーマッタ/ビルド システム マトリクスの 1 つの四角形を埋めてしまえば、必要なすべての部分について実用的なサンプルが得られるので、関係者が空いた四角形を埋めるのは簡単です。
Maven プラグインの実装と保守、および Gradle のリモート ビルド キャッシュ サポートの修正については、Konstantin Lutovich に感謝します。
greclipse による Groovy サポート、CDT による C++ サポート、WTP による XML サポート、および他の Eclipse ベースのフォーマッタを使用した膨大な量の作業に対して、Frank Vennemeyer に感謝します。
Jonathan Bluett-Duncan に感謝します。
最新チェックの実装 #31
図書館を完璧に破壊する #56
他にもたくさんありますが、特にspotlessCheck
の差分サポート
高品質のコードレビューによるさまざまなトピックの継続的な改善
buildcache、InputChanges、および遅延構成をサポートするために Gradle プラグインの根幹を再構築してくれた Daz DeBoer に感謝します。
Spotless Gradle 用の VS Code 拡張機能を作成してくれた Richard Willis に感謝します。
Spotless Gradle 用の IntelliJ プラグインを作成した Ryan Gurney に感謝します。
汎用ネイティブ フォーマッタ、jsr-223 フォーマッタ、Maven pom ソートを追加してくれた Markus Heberling に感謝します。
Antlr のサポートを追加してくれた Matthias Balke に感謝します。
google-java-format 1.8+ (#563) のサポートを追加してくれた Matthias Andreas Benkard に感謝します。
google-java-format の Skip-reflowing-long-strings オプションのサポートを追加してくれた Thomas Broyer に感謝します。
ktfmt のサポートを追加してくれた Ranadeep Polavarapu に感謝します (#569)
npm ベースのフォーマッタのサポートを、 prettier
とtsfmt
含めて 2 回追加してくれた Simon Gamma に感謝します。
インポートソーターにワイルドカード最後のサポートを追加してくれた Hakanai に感謝します。
すべての Eclipse ベースのフォーマッタを 4.13 に更新し、マルチプロジェクト用の Groovy を修正してくれた Kevin Brooks に感謝します。
JDBI バインド リスト パラメータの SQL フォーマット サポートを修正してくれた Dylan Baroody に感謝します。
google-java-format にカスタム mavenCooperative サポートを追加してくれた figroc に感謝します。
ファイル権限を破壊するバグを発見して修正してくれた Thomas Glaeser に感謝します。
scalafmt の統合を修正してくれた Joan Goyeau に感謝します。
2.0 以降の scalafmt を修正してくれた Nick Sutcliffe に感謝します。
Baptiste Mesta に感謝します
DBeaver フォーマッタを Spotless に移植しました。優れた SQL フォーマッタを提供してくれた DBeaver とその作者に感謝します。
ライセンスヘッダーの日付を認識する #179
Gradle (#322) と Maven (#392) でそれぞれフォーマットを特定のファイルに制限する機能を追加してくれた vmdominguez と Luis Fors に感謝します。
Java 9 (#426) でのクラスローディングを修正してくれた bender316 に感謝します。
Gradle の内部機構について多大な支援をしていただいた Stefan Oehme に感謝します。
日付を認識するライセンスヘッダーに設定可能な日付範囲を追加してくれたeyalkaspiに感謝します。
kotlin gradle に ktfmt サポートを追加してくれた Andrew Parmet に感謝します。
Spotless の google-java-format 統合に AOSP サポートを追加してくれた Oliver Horn に感謝します。
Eclipseによるフォーマット
Eclipse コード フォーマッタを大幅に改善してくれた Mateusz Matela に特に感謝します。
要望の多かった ktlint 0.34 以降のサポート (#469) の修正、複数のビルド更新、Gradle 非推奨の警告 (#434 など) の修正をしてくれた Zac Sweers に感謝します。
ktlint FilenameRule (#974) のサポートを追加してくれた Stephen Panaro に感謝します。
Android ドキュメントの改善、バージョンアップ、ビルドの改善については、Nelson Osacky に感謝します。
ktlint の統合に協力してくれた Stanley Shyiko に感謝します。
Gradle Kotlin DSL ファイルの ktlint サポートを追加してくれた Jonathan Leitschuh に感謝します。
元々は Youri Bonnaffé によって gradle-format-plugin からフォークされました。
eclipse-jdt deps を 4.11 に引き上げてくれた Ismaël Mejía に感謝します。 PR #60。
ロギングとマルチプロジェクトのサポートを改善してくれた Gábor Bernát に感謝します。
tsfmt と pretty を Maven に移植してくれた Oliver Szymanski に感謝します。
非 Java ソース セットでの Java ソースのフォーマットを改善してくれた Andrew Oberstar に感謝します。 PR #60。
IntelliJ スタイルの年のプレースホルダーのサポートを追加してくれた Sameer Balasubrahmanyam に感謝します。
シンプルな JSON フォーマッタを追加してくれた Jamie Tanna に感謝します。
#506 の厄介な原因を突き止めてくれた Adib Saikali と Paul Merlin に感謝します。
EclipseCodeFormatter から順序をインポートします。
gradle によって構築されました。
junit によってテストされました。
DiffPlug によって保守されています。