読者です 読者をやめる 読者になる 読者になる

プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

静的解析ツールClang

最近、開発中のアプリを使っているとよく落ちるようになったので、静的解析ツールを試してみました。さくっと入るかなと思ったのですが、思いがけず色々はまったのでまとめておきます。

インストールから実行まで

1. LLVM/Clang Static Analyzerから最新版(checker-0.202.tar.bz2)を取得します。

2. 適当な場所に置いてパスを通します。

mv checker-0.202 /usr/local/checker
export PATH=$PATH:/usr/local/checker

3. 実行します。

cd iPhoneProjectDir
scan-build --view xcodebuild

と、ここでエラーがいくつかでました。

arm-apple-darwin9-gcc-4.0.1

arm-apple-darwin9-gcc-4.0.1がないというエラーが出たのでリンク作成。

ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.0.1 /Developer/usr/bin/arm-apple-darwin9-gcc-4.0.1
scan-build --view xcodebuild
CodeSign error

次にCodeSign errorが出たのですが、解決方法が見つからず。
色々いじって下記のようにすると上手く実行できました。


プロジェクトの情報

  • 全ての構成でコード著名を「Don't Code Sign」に変更
  • クリーンして、アクティブターゲットを「Debug」に変更


プロジェクトの情報>一般

  • すべての構成のベースSDKを「Simulator-iPhoneOS2.2.1」に変更

Xcodeの左上のセレクトボックスで、Simulator XXX (プロジェクト設定)となっていればOK)

ゾンビプロセス

コンパイルが終了して、http://127.0.0.1:8181にアクセスすると結果が見れると表示されるも、サイトにアクセスできず。で、ps -ef | grep scan で残っていたプロセスを全てkillしてから再度実行すると無事に閲覧できました。

結果

10件ほどリークが見つかったので全て修正。
Instrumentsと合わせて大分リークを潰せました。
Clang便利!


追記:
iPhone3.0の環境で実行するとコンパイルでエラーになっているようで上手く実行できず。
gccのバージョンかなあ..