「Clang Static Analyzer」を使ってみる
iPhoneアプリ開発において、メモリーリークが気になったので、次のツールを使ってみた。
・「Clang Static Analyzer」
非常によい。ソースコード上に表示してくれるので、どこが悪いか一目でわかる。
ちょっと導入に手こずったが、Web検索したら、同じ様にハマッタことの解決方法が見つかったので、なんとか使えるようになった。エラー発生後の対処は、もっとよい方法があるのかもしれないが、まぁ使えるようになったからいいか。。
【手順】
1 ダウンロードする。
「Clang Static Analyzer」ページの 「checker-238.tar.bz2」をクリックして保存する。
2 解凍する。
Finderでダブルクリックで解凍完了。「checker-238」フォルダができる
3 パスを通す
ターミナルを立ち上げ、パスを通す。
自分はホームのbin にコピーして、そこにパスを通した。
(mkdir ~/bin)
cp -rp ~/Downloads/checker-238 ~/bin
vi ~/.bash_profile
これを書く:
export PATH=$PATH:~/bin:~/bin/checker-238/
source .bash_profile
4 iPhoneアプリのプロジェクトに移動する
cd XXX (xcodeprojのあるディレクトリ)
5 scan-build を実行
scan-build --view xcodebuild
ここでエラー発生。。
・gcc-4.2: error trying to exec '/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1': execvp: No such file or directory
・[BEROR]Code Sign error:
→ファイルがないようなので、作った(リンクを作った。)
ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.2.1 /Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1
(arm-apple-darwin9-gcc-4.2.1 しかなかったので、10で名前をつけてやった。)
→全ての構成でコード著名を「Don't Code Sign」に変更した。
いちおう「ビルド」ー「クリーニング」しておく。
再度、実行
scan-build --view xcodebuild
結果のHTMLがブラウザで表示された。ナイス!
追記
=== BUILD NATIVE TARGET View Switcher OF PROJECT View Switcher WITH THE DEFAULT CONFIGURATION (Release) ===
Check dependencies
CodeSign error: code signing is required for product type 'Application' in SDK 'Device - iPhone OS 3.1.3'
[BEROR]CodeSign error: code signing is required for product type 'Application' in SDK 'Device - iPhone OS 3.1.3'
** BUILD FAILED **
こんなエラーがでたら、
プロジェクトの情報で、「一般」すべての構成のベースSDK をiPhoneシミュレータ3.1.3にすればOK.
Device だと code sign が必要なので、シミュレータにしてやればよいのだな。
・「Clang Static Analyzer」
非常によい。ソースコード上に表示してくれるので、どこが悪いか一目でわかる。
ちょっと導入に手こずったが、Web検索したら、同じ様にハマッタことの解決方法が見つかったので、なんとか使えるようになった。エラー発生後の対処は、もっとよい方法があるのかもしれないが、まぁ使えるようになったからいいか。。
【手順】
1 ダウンロードする。
「Clang Static Analyzer」ページの 「checker-238.tar.bz2」をクリックして保存する。
2 解凍する。
Finderでダブルクリックで解凍完了。「checker-238」フォルダができる
3 パスを通す
ターミナルを立ち上げ、パスを通す。
自分はホームのbin にコピーして、そこにパスを通した。
(mkdir ~/bin)
cp -rp ~/Downloads/checker-238 ~/bin
vi ~/.bash_profile
これを書く:
export PATH=$PATH:~/bin:~/bin/checker-238/
source .bash_profile
4 iPhoneアプリのプロジェクトに移動する
cd XXX (xcodeprojのあるディレクトリ)
5 scan-build を実行
scan-build --view xcodebuild
ここでエラー発生。。
・gcc-4.2: error trying to exec '/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1': execvp: No such file or directory
・[BEROR]Code Sign error:
→ファイルがないようなので、作った(リンクを作った。)
ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.2.1 /Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1
(arm-apple-darwin9-gcc-4.2.1 しかなかったので、10で名前をつけてやった。)
→全ての構成でコード著名を「Don't Code Sign」に変更した。
いちおう「ビルド」ー「クリーニング」しておく。
再度、実行
scan-build --view xcodebuild
結果のHTMLがブラウザで表示された。ナイス!
追記
=== BUILD NATIVE TARGET View Switcher OF PROJECT View Switcher WITH THE DEFAULT CONFIGURATION (Release) ===
Check dependencies
CodeSign error: code signing is required for product type 'Application' in SDK 'Device - iPhone OS 3.1.3'
[BEROR]CodeSign error: code signing is required for product type 'Application' in SDK 'Device - iPhone OS 3.1.3'
** BUILD FAILED **
こんなエラーがでたら、
プロジェクトの情報で、「一般」すべての構成のベースSDK をiPhoneシミュレータ3.1.3にすればOK.
Device だと code sign が必要なので、シミュレータにしてやればよいのだな。

