6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SwiftLint 0.55でSwiftPM Commandプラグインに対応した!

Last updated at Posted at 2024-05-22

背景

2024/2/2に mobile.stmn #4 という名古屋のモバイルアプリ開発勉強会で、Swiftでのアプリ開発に必要な各種CLIツールもSwiftPMに寄せる話をしました。

SwiftLintに関するスライド

しかし、このタイミングの SwiftLint 0.54 ではCommandプラグインが提供されておらず、--fix機能での自動修正をSwiftPM経由でできませんでした。そこで、やむなく次のようなスクリプトで運用していたのですが、それがとても心残りでした(「完結編」と言ったのに完結していない...)。

cd ${PACKAGE_DIR} && swift package resolve
cd ${PACKAGE_DIR}/.build/checkouts/SwiftLint && \
 	swift run swiftlint --config ${PACKAGE_DIR}/.swiftlint.yml --fix

SwiftLint 0.55リリース :tada:

SwiftLint 0.54のリリースから約半年経過したこの2024年5月に、新バージョン 0.55 がリリースされました。そしてこのバージョンで待望のCommandプラグインが提供されました。

SwiftLintをインストールしているPackageディレクトリで以下のコマンドによりSwiftLintを実行することができます。もちろん--fixオプションなど各種パラメータを指定可能なので、この方法で自動修正も行えるようになります。

swift package plugin swiftlint

--fixオプションを使う場合は、pluginのオプションに--allow-writing-to-package-directoryを追加してファイルへの書き込みを許可しておこう!

注意点①:Build Toolプラグインの名前が変わった

Commandプラグイン提供に伴い、従来から提供されているBuild Toolプラグインの名前が変わったので、Package.swiftの修正が必要となります。

Package.swift
-  .plugin(name: "SwiftLintPlugin", package: "SwiftLint")
+  .plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLint")

注意点②:Build ToolプラグインのConfigファイルの参照方法が変わった

Build Toolプラグインにはパラメータ等を指定することができません。そこで SwiftLint 0.54 ではREADMEで以下のような説明がされており、Configファイル .swiftlint.yml はルートディレクトリにあるものが参照されるようになっていました。

Due to limitations with Swift Package Manager Plug-ins this is only
recommended for projects that have a SwiftLint configuration in their root directory as
there is currently no way to pass any additional options to the SwiftLint executable

それが今回のバージョン 0.55 では、次のような説明に変わっており、ビルド方法によって参照されるConfigファイルの場所が変わっていますので注意してください。

The build tool plugin determines the SwiftLint working directory by locating
the topmost config file within the package/project directory. If a config file
is not found therein, the package/project directory is used as the working
directory.

Xcodeプロジェクトをビルドする場合

  • Xcodeプロジェクトファイルのディレクトリ配下にあるConfigファイルのうち、最上位にあるもののディレクトリがワーキングディレクトリとなり、そのConfigファイルが参照される
  • つまり、基本的にはXcodeプロジェクトファイルと同じ位置に配置しておくのが良さそう

Swiftパッケージをビルドする場合

  • パッケージディレクトリ配下にあるConfigファイルのうち、最上位にあるもののディレクトリがワーキングディレクトリとなり、そのConfigファイルが参照される
  • つまり、基本的にはPackage.swiftファイルと同じ位置に配置しておくのが良さそう

まとめ

SwiftLint 0.55でSwiftPM Commandプラグインに対応したことで、私の「iOSパッケージマネージャ奮闘記」が本当に完結しました!めでたい:tada:

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?