Xcode に内蔵された swiftlang/swift-format を使う
まとめ
コマンドラインツール(CLI)
# `xcodebuild -version` で
# Xcode 16.0
# Build version 16A242d 以降であることを確認してから
swift format --help
xcrun を使う場合
# `xcodebuild -version` で
# Xcode 16.0
# Build version 16A242d 以降であることを確認してから
xcrun --run swift-format --help
# または `--find` を使う
$(xcrun --find swift-format) --help
Xcode のメニュー
Editor > Structure > Format File with 'swift-format' (Ctrl + Shift + I
)
swiftlang/swift-format とは
swiftlang/swift-format(旧 apple/swift-format)は、Swift を使ったプロジェクトで用いることのできるコードフォーマッター(Format)およびリンター(Lint)です。
swiftlang 下にあり、公式のフォーマッターであるとも言えます。
swiftlang/swift-format のインストール方法
これまでのswiftlang/swift-format はコマンドラインツールとして使う方法、Swift Package プラグイン(コマンドプラグイン)として使う方法などがありました。コマンドラインツールとして使う方法は例えば以下のとおりです。
git clone https://github.com/swiftlang/swift-format
cd swift-format
git checkout refs/tags/600.0.0 # Swift 6.0 の場合
swift package experimental-install --product swift-format
brew install swift-format
mint install swift-format
swiftlang/swift-format の使い方
コマンドラインツールとしてのヘルプを表示するには --help
を使います。
# パスを通している場合
swift-format --help
# パスを通していない場合(Swift Package Manager の例)
~/.swiftpm/bin/swift-format --help
# パスを通していない場合(Homebrew の例)
/opt/homebrew/bin/swift-format --help
# Mint へのパスを通している場合
mint run swift-format --help
詳しい使い方は --help
の内容、swiftlang/swift-format の README、そのほかの解説記事等を参照してください。
swiftlang/swift-format が Xcode の内蔵ツールチェーンに含まれるように
🎉2024年9月17日(日本時間)に一般向けにリリースされた Xcode 16 より、内蔵ツールチェーンにこの swiftlang/swift-format が同梱されるようになりました。これにより、コマンドラインツールとして使用したい場合に Swift Package Manager、Homebrew や Mint を経由するなどしてインストールしなくても、Xcode がインストール済みであれば swiftlang/swift-format が使える状態になっています。
お好きな方法(App Store 等)で Xcode 16.0 (16A242d) 以降をインストールした後、xcodebuild
にて 16.0 (16A242d) 以降がアクティブになっていることを確認します。
xcodebuild -version
# Xcode 16.0
# Build version 16A242d
xcrun
の --find
を用いることで、内蔵ツールチェーンに含まれている swiftlang/swift-format のパスを出力できます。
xcrun --find swift-format
# /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-format
swiftlang/swift-format をコマンドラインツールとして使う
Xcode のswift format
を用いることで、Xcode の内蔵ツールチェーンの swiftlang/swift-format を実行できます。
# `xcodebuild -version` で
# Xcode 16.0
# Build version 16A242d 以降であることを確認してから
swift format --help
xcrun を使う場合
xcrun
の --run
を用いることで、Xcode の内蔵ツールチェーンの swiftlang/swift-format を実行できます。
# `xcodebuild -version` で
# Xcode 16.0
# Build version 16A242d 以降であることを確認してから
xcrun --run swift-format --help
# または `--find` を使う
$(xcrun --find swift-format) --help
これまで swift-format
を実行していたスクリプト等では、それを swift format
等に置き換えることで、Xcode の内蔵ツールチェーンの swiftlang/swift-format を使うように変更できます。
swiftlang/swift-format を使う
Xcode のメニューからXcode のエディタでファイルを編集している間に、swiftlang/swift-format を使ったフォーマッティングを行うには、「Editor」>「Structure」>「Format File with 'swift-format'」を都度クリックします。もしくは、Ctrl + Shift + I
でも都度実行できます。
Editor > Structure > Format File with 'swift-format' (Ctrl + Shift + I
)
Discussion
swift format
で済ませるのが短くて良いと思います。ご指摘ありがとうございます!
初稿での
xcrun
を使う方法についてはアコーディオンに閉じ、swift format
を使う方法へと更新させていただきました。.swiftformatでしたっけ、そういう設定ファイルを読んでくれるのか気になってました。
調べてみよう
読んでくれましたわ
.swift-format
例えばこんな設定で