Faux PasはXcodeプロジェクト向けの有償の静的解析・コードチェックツールです。
個人的に OCLint http://oclint.org/ や Clang Static Analyzer http://clang-analyzer.llvm.org/ の活用に近年苦しんでいたのでFaux Pasは救世主でした。
Faux Pasのトライアル版は、実行時に待ち時間が15秒あったり、解析結果の一部がマスクされて見れないという制限があるものの、LINTツールとしてコーディングルールやスタイルのチェック結果の成功/失敗をCIで取るだけなら充分に機能して、導入を試してみるのには都合がよかったのです。
dependencies:
pre:
- brew install caskroom/cask/brew-cask
- brew cask install fauxpas
- /opt/homebrew-cask/Caskroom/fauxpas/*/FauxPas.app/Contents/Resources/install-cli-tools
test:
pre:
- fauxpas check Ubiregi2.xcodeproj/ --target "Ubiregi2" --minErrorStatusSeverity Error --configFile fauxpas.json
- brew-cask をCircleCI上で使えるようにする
- Faux Pas のパッケージをインストールする
- Faux Pas のコマンドラインツールを入れる
-
fauxpas check
でユニットテスト実行前にコードをチェックする
ということをやっています。
fauxpas check Ubiregi2.xcodeproj/ --target "Ubiregi2" --minErrorStatusSeverity Error --configFile fauxpas.json
について --minErrorStatusSeverity
で Error , Warning , Concern
のどれかを指定します。
--configFile fauxpas.json
は渡すオプションをJSON形式で指定できます。今回ルールの設定はここでしました。
詳しくはドキュメントをごらんください
http://fauxpasapp.com/docs/#configuration
{
"excludedRules": [
"TranslationFormatMismatch",
"UnknownResourceCodeReference",
"HardcodedUIString",
"MissingTranslation",
"WeakReferenceToTopLevelXIBObject",
"ReleaseBuildCompilerArgs"
]
}
上記は既存のアプリケーションのコードの解析でエラーが発生したルールを無視するようにしました。
私たちはインクリメンタルに改善作業をすすめてゆくのが好きですので、一度すべてのエラーを無視して、コーディング規約を制定しつつ、コード修正が必要な箇所についてパッチをあてていきます。なのでこのCIビルド上のチェックの条件は一番ゆるくなっています。
各種ルールの定義はこちらを見てください
http://fauxpasapp.com/rules/
Swift
※ 残念ならがFaux Pas は現在Swiftに対応していません。ですのでこの方法は老プロジェクト向けですね。
しかしちゃんと最新のObjective-Cコードで動くし、応援の意味をこめてライセンス購入したいなと思っています
http://fauxpasapp.com/buy/