Scala コードフォーマッター(Scalafmt スタイル)
ガイド
Scala コードフォーマッター(Scalafmt スタイル)
スケーラの原始ソースを貼り付け、Scalafmtの標準スタイル(2スペースインデント、バランスの取れたブレース、オペレータ間のスペースの標準化、並べ替えられたインポート、そして一貫したトリーリングカンマ)でフォーマットされたコードを返します。出力は決定論的であり、同じ入力が常に同じ結果を生み出します。これにより、コードレビューにおけるよりクリーンな差分が得られ、スペースに関する議論が不要になります。
使用方法
- スケーラコードを入力ボックスに貼り付け、またはサンプルをロードして動作を確認してください。
- インデントスタイル(2スペースがScalafmtのデフォルト)と最大列幅(80、100、120、または160)を選択してください。
- 必要なオプションを切り替えます:複数行リストのトリーリングカンマ、並べ替え/グループ化されたインポート、オペレータ間のスペース、コメントの保持、および空白行の収縮。
- クリック 形式. コピーボタンを使って結果をコピーするか、または以下としてダウンロードします。
.scalaファイル。
機能
- Scalafmtのデフォルトスタイル – 実際のscalafmtツールが使用する規則(インデント、ブレースの処理、二項オペレータ間のスペース)を反映しています。
- 設定可能なインデント – 2スペース、4スペース、またはタブを選択してプロジェクトのスタイルガイドに合わせます。
- 最大列幅 – 80、100、120、または160を選んでチームの折り返しポリシーに合わせます。
- 並べ替えおよびグループ化されたインポート – インポートをアルファベット順に並べ替え、標準ライブラリ、第三者、ローカルにグループ分けし、グループ間には空白行を挿入します。
- 終端カンマ – 複数行引数およびパラメータリストにトリーリングカンマを追加して、よりクリーンなバージョン管理の差分を実現します。
- コメントの保持 – ラインコメント、ブロックコメント、およびScaladocを保持しながら、周囲のコードを整備します。
- 文字列および埋め込み安全 – フォーマット処理は文字列、キャラクタリテラル、三重引用符文字列、または埋め込みの内容に影響を与えません。
s"..."/f"..."埋め込み - Scala 3対応 – 現代的なScala 3キーワード(例:
given,using,then,enumと、derives. - ブラウザ内で完全に動作 – アップロードなし、サーバーのリクエストなし、テレメトリなし。あなたのコードはあなたのマシンに留まります。
一般的な使用例
- Slackスレッド、Stack Overflowの回答、または技術ブログ投稿に貼り付ける前に、短いコードスニペットを整備します。
- まだscalafmt設定がチェックインされていない古くからのプロジェクトでフォーマットを標準化します。
- マクロ出力、スキーマから派生したケースクラスなど、生成されたコードを事前にフォーマットし、手書きのスケーラコードのように読みやすいようにします。
- 各貢献者がわずかに異なるIDE設定を使用する混合作者ファイル間でスタイルを標準化します。
- 小さなリファクタリングを sanity-check するため、sbtやScalaビルドパイプラインを起動する必要はありません。
よくある質問
-
Scalafmtとは何ですか?そして一貫したスケーラフォーマットがなぜ重要ですか?
Scalafmtはスケーラ生態系における実際のコードフォーマッターです。コードベース全体に一貫した決定論的なスタイルを強制することで、コードレビューの議論からフォーマットを除去し、スペース変更によって引き起こされるノイズのある差分を減らし、新規参加者をプロジェクトの他のメンバーと統一する助けになります。一貫したフォーマットは、インデントとスペースが常に同じ意味を持つため、不慣れなコードをスキャンしやすくなります。
-
なぜScalafmtは最大列幅を80にデフォルトに設定していますか?
80カラムの習慣は早期のターミナルやパンチカードに遡りますが、今日も生き残っているのは、狭い行が並べ替え差分、コードレビューツール、分割エディタパネルで読みやすいからです。80カラムの制限は、短い識別子、深くネストされた表現、およびヘルパー関数の頻繁な抽出を促進します。多くのチームはこれを100または120カラムに緩和しており、そのため現代のフォーマッターではこの設定をカスタマイズできるようにしています。
-
トリーリングカンマとは何ですか?そしてなぜそれが便利ですか?
トリーリングカンマは、複数行リスト、引数リスト、またはパラメータリストの最後の要素の後に来るカンマです。フォーマッターでは、このカンマが行ベースの差分をきれいにします:新しい要素を追加する場合、1行だけ追加され、前の行にカンマを追加する必要がなくなります。トリーリングカンマは、行を再配置する際にも、すべての要素が同じように終了するため、操作が簡単になります。スケーラは2.12.2から引数およびパラメータリストにトリーリングカンマをサポートしています。
-
インポートはなぜ通常、標準ライブラリ、第三者、ローカルにグループ化されるのですか?
グループ化は、GoやPython(isort)などの言語から借りた長年の習慣です。これにより、標準ライブラリインポートが最初に来、次に第三者ライブラリ、そして同じプロジェクトのコードが続きます。グループ間の空白行は視覚的なアンカーとなり、レビュー者が新しい外部依存関係が導入されたことをすぐに認識できるようにします。これはしばしば議論に価値のある信号です。
-
文法的フォーマットと意味的フォーマットの違いは?
文法フォーマッターは、ソーステキストに基づいてのみ、空白、改行、インデントを再配置します。型やシンボルを理解したり、コンパイラを実行したりする必要はありません。一方、意味フォーマッターは、プログラムのコンパイラの視点にアクセスできるため、識別子のリネーム、メソッドの使用に基づく並び替え、または未使用インポートの削除を行うことができます。Scalafmtは主に文法的であり、不完全またはコンパイルできないコードでも高速かつ安全に実行できます。
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
