Swiftコードの品質向上を目的に静的解析を真面目にやってみようと思って調べてみるとTailorが引っかかったので試してみる。
色々参考にさせていただいたが、自分の作業メモということで参考サイトと丸かぶりのことも沢山あることは気にしない。
まずはインストールから。
##Tailorのインストール
HomebrewでTailorをインストール
$ brew install tailor
なんかエラーが出る。rubyのバージョン2.2.2以上が必要っぽい
2.0.0と条件を満たしていないようなのでアップデートを実施することに。
ついでにRubyのバージョン管理もおこないたかったのでrbenvをインストールすることにした。
$ brew install rbenv ruby-build
インストールできるrubyのバージョンを確認
$ rbenv install -l
たくさんリストに出てくるが・・・とりあえず2.2.2をインストール
$ rbenv install 2.2.2
バージョン確認
$ rbenv version
使用するバージョンを指定する
$ rbenv global 2.2.2
2.2.2に切り替わっているように見えるが・・・
実はここでruby -vして確認してもうまく切り替わっておらず。
調べたところ切り替わらないケースがあるようなのでチェックする。
$ which ruby
/usr/bin/ruby
やはりできていない。
このような表示の場合はPATHが正しく設定されていないとのことなので.zshrcにeval "$(rbenv init -)"を追加
$ vi ~/.zshrc
eval "$(rbenv init -)"
その後which rubyで切り替わっていることを確認して再実行。
無事切り替え完了。
##Tailorの実行
CLIで実行する場合(単一ファイル)
$ tailor swiftファイル
CLIで実行する場合(フォルダ単位)
対象のフォルダまで移動して
$ tailor .
##TailorのチェックをXcodeビルド時に実行できるようにする
CLIの実行でも可能だがXodeでビルドした時にチェックできるようにする。
tailor --xcode <xcodeprojectファイルへのパス>/xxxx.xcodeproj
Xcodeを開いて確認
Tailorが追加されているのでビルドしてみる
warningが出ていることを確認できた。
[terminating-newline] File should terminate with exactly one newline character ('\n')
UITestのコードが入っているのでWarningが14こ出ていたので他のwarningも確認してみると
[upper-camel-case] Class names should be UpperCamelCase
[trailing-whitespace] Line should not have any trailing whitespace
プロジェクト名の頭文字を小文字にしてしまうと自動生成したテストコードのクラス名の頭文字も小文字になりwarningが出てしまう。
なんとなく使えそうなところまで確認できたので、次はTailorのガイドラインを調べてみる。
##Tailorのガイドライン(Rule)
Tailorのwikiに記載されている内容を確認。
コマンドで確認することもできる。
$ tailor --show-rules
プロジェクト毎に設定するためには、xcodeprojectファイルと同階層に.tailor.ymlを作成することで可能になる。
ymlには除外するフォルダやファイルを指定できるので、テスト用に自動生成されたファイルなどはここで除外できる。
ビルドの度にチェックをすると重くなることもあるらしいので、Build Phaseに追加されたスクリプトの最初にexit 0
を書くことでチェックを無効にすることができる。
基本チェックすることにするが除外する内容はこれから検討する。
最後に気づいたのだがtailor swift
でgoogle先生に聞いてみると「テイラー・スイフト」が出てきた。
「あ〜」と思ったので・・・
#参考
インストールやymlの記載内容等はこちらを参考
-[Swift] TailorでSwiftのコードを静的解析!
-Swiftの静的コード解析ツールTailorの使い方