LoginSignup
6
5

More than 5 years have passed since last update.

CircleCI上でFaux Pasを使って Objective-C コードの品質チェックをする

Last updated at Posted at 2015-08-27

Faux PasはXcodeプロジェクト向けの有償の静的解析・コードチェックツールです。

個人的に OCLint http://oclint.org/ や Clang Static Analyzer http://clang-analyzer.llvm.org/ の活用に近年苦しんでいたのでFaux Pasは救世主でした。

Faux Pasのトライアル版は、実行時に待ち時間が15秒あったり、解析結果の一部がマスクされて見れないという制限があるものの、LINTツールとしてコーディングルールやスタイルのチェック結果の成功/失敗をCIで取るだけなら充分に機能して、導入を試してみるのには都合がよかったのです。

circle.yml
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
  1. brew-cask をCircleCI上で使えるようにする
  2. Faux Pas のパッケージをインストールする
  3. Faux Pas のコマンドラインツールを入れる
  4. fauxpas check でユニットテスト実行前にコードをチェックする

ということをやっています。

fauxpas check Ubiregi2.xcodeproj/ --target "Ubiregi2" --minErrorStatusSeverity Error --configFile fauxpas.json

について --minErrorStatusSeverityError , Warning , Concern のどれかを指定します。
--configFile fauxpas.json は渡すオプションをJSON形式で指定できます。今回ルールの設定はここでしました。

詳しくはドキュメントをごらんください
http://fauxpasapp.com/docs/#configuration

fauxpas.json
{
  "excludedRules": [
    "TranslationFormatMismatch",
    "UnknownResourceCodeReference",
    "HardcodedUIString",
    "MissingTranslation",
    "WeakReferenceToTopLevelXIBObject",
    "ReleaseBuildCompilerArgs"
  ]
}

上記は既存のアプリケーションのコードの解析でエラーが発生したルールを無視するようにしました。
私たちはインクリメンタルに改善作業をすすめてゆくのが好きですので、一度すべてのエラーを無視して、コーディング規約を制定しつつ、コード修正が必要な箇所についてパッチをあてていきます。なのでこのCIビルド上のチェックの条件は一番ゆるくなっています。

各種ルールの定義はこちらを見てください
http://fauxpasapp.com/rules/

Swift

※ 残念ならがFaux Pas は現在Swiftに対応していません。ですのでこの方法は老プロジェクト向けですね。

しかしちゃんと最新のObjective-Cコードで動くし、応援の意味をこめてライセンス購入したいなと思っています
http://fauxpasapp.com/buy/

6
5
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
5