LoginSignup
11
10

More than 5 years have passed since last update.

CocoaPodsでSwiftLintを導入する

Last updated at Posted at 2018-05-11

はじめに

コードの量が大きくなる前にSwiftLintを導入しようと思ったので、その時の導入の記録

環境

Xcode9.2
Swift4
cocoaPods 1.2.0

podfileの編集

vi podfile

Podfileの中身の例

これはプロジェクトネームがTodolist-firebaseなので5行目がこのようになっていますが、自分の作ったプロジェクトネームをここに入れて下さい

#Uncomment the next line to define a global platform for your project
platform :ios, '10.0'

target 'Todolist-firebase' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  pod 'SwiftLint'
end

podでライブラリをインストール

podfileを参照して、その中に入ってるライブラリを含めてxcworkspaceを作ります

$pod install

プロジェクトファイルを開く

cocoaPodsを使う場合は.xcodeprojと間違えないように注意

$open (プロジェクトネーム).xcworkspace
例
$open Todolist-firebase.xcworkspace

Xcode内の設定

screenshot.png
スクリーンショット 2018-05-11 17.48.05.png

cocoaPods導入時の注意点

下の図のようにRunScriptの項目を開き、黒いウィンドウに下記を記入するのですがcocoaPodsの場合は内容が少し違います
公式ドキュメントのXcodeの項目によると
screenshot 2.png
赤枠で囲われているところに着目すると,このように書き換える必要があることがわかります。

if which "${PODS_ROOT}/SwiftLint/swiftlint" >/dev/null; then
${PODS_ROOT}/SwiftLint/swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

 とりあえず走らせてみる

⌘+Bで実行できる
AppDelegateのファイル内のコメントアウトのところですらエラーが出てくるようになってしまった
いろんなライブラリを入れていたためか、エラーが出てくるように

screenshot.png

SwiftLintを走らせないようにするファイルや細かいルールの設定をする

公式ドキュメントより
screenshot.png

.swiftLint.ymlファイル内に細かいルールを設定するとエラーを吐かないようになるとのことです

disabled_rules:デフォルトの有効なセットからルールを無効にします。
opt_in_rules:デフォルトのセットからルールを有効にします。
whitelist_rules:ホワイトリストとして動作し、このリストで指定されたルールだけが有効になります。 disabled_rulesまたはopt_in_rulesと一緒に指定することはできません。

とりあえず、今回は一行あたりの文字数制限とpodで入れたライブラリたちが引っかからないようにしたいので .swiftLint.ymlを編集します

$vi .swiftLint.yml

下記の参考文献から例をお借りしました

# 実行から除外するルール
disabled_rules:
# テストコード、Pod等のライブラリは対象外
excluded:
- Pods/
- Podfile
- Podfile.lock

# 1行あたりの文字数制限
line_length: 300

再び実行しました

⌘+Bで実行し赤色のエラーが出ないようになりました。

screenshot.png
黄色い警告を見てみると

行末に空白があるという警句や

Trailing Whitespace Violation: Lines should not have trailing whitespace. (trailing_whitespace)

関数の長さが長すぎという警告

Function Body Length Violation: Function body should span 40 lines or less excluding comments and whitespace: currently spans 49 lines (function_body_length)

きれいなSwiftを書くことを意識できますね

参考文献

公式ドキュメント
【SwiftLint】CocoaPodsでSwiftLintを導入する
Swiftの静的解析を行うためにSwiftLintをインストールしてみた
swiftlint 最新版(0.18.1) の設定ファイル(.swiftlint.yml)のサンプル

11
10
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
11
10