iPhone&Androidプログラミング記
英語─上達しないのは努力不足が原因ではなかった!
英語が話せない…を解決する博士開発の噂の英語教材!返品保証付!

2009年05月28日

iPhoneアプリ開発で役立つメモリリーク等を静的解析するツール

iPhoneアプリに限った話ではないですが、メモリの管理は大切です。
メモリは無限ではなく有限なので、必要な時に確保して不要になった時は解放する必要があります。
そのメモリ管理を怠ると、解放しないまま次のメモリを確保してしまい、解放するためのポインタ情報を失ってしまったりします。
そんな事にならないようにしなければいけません。

そのメモリの確保・解放が正しく行われているかを静的に解析するための便利なツールに「clang」というものがあります。
まずは以下からツールをダウンロードします。

□ LLVM/Clang Static Analyzer
  http://clang.llvm.org/StaticAnalysis.html

現在の最新版は「checker-0.209.tar.bz2 (built May 18, 2009) 」

ダウンロードしたら解凍します。

解凍したら、解凍したファイルを「/usr/local/bin/」へコピーするのですが、普通にはFinderでそのフォルダへ移動する事はできません。
まずはFinderを開いて、上のメニューの移動から「ファルダへ移動」を選択します。
そこに「/usr/local/bin/」を入力します。
そうするとフォルダへ移動する事ができます。

フォルダへ移動できたらさっきのファイルを全てコピーします。

これでclangを使う事ができます。

そしたらターミナルを開いて、静的解析したいプロジェクトのフォルダへ移動します。

cd /Users/ユーザ名/Desktop/MyProject


ビルドしたファイルが残っていると正しく静的解析がされない事があるので、クリーニングをします。

xcodebuild clean


クリーニングが終わってから以下のコマンドを実行すると静的解析が始まります。

scan-build -o ~/Desktop/ xcodebuild


「-o ~/Desktop/」は、デスクトップに解析結果のHTMLファイルを保存するという事です。
色々なオプションがありますが、基本的には以下のようなオプションでいいかと思います。

scan-build --view -o ~/Desktop/ xcodebuild

こうすると、静的解析が終わった後に問題があればブラウザを起動してレポートを表示してくれます。
問題がなければそのまま止まります。

注意として「すべての構成のベースSDK」がDeviceになっているとコンパイラが見つからないというエラーでビルドに失敗します。
なので、Simulatorにしなければいけません。
場所はプロジェクトの情報の一般タブの下の方にあります。

上記のコマンドを毎回実行していると面倒くさいので、AppleScriptを書いておくと楽です。
例えばこんな感じです。

on run
tell application "Terminal"
activate
(do script with command "
cd /Users/MyName/Desktop/MyProject
xcodebuild clean
scan-build --view -o ~/Desktop/clang xcodebuild
")
end tell
end run


clangを使う事で80%くらいの問題は解消できます。
あとの20%はInstrumentsを使って潰していくしかないです。



posted by ラキシス at 17:04 | Comment(0) | TrackBack(0) | iPhoneプログラミング | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。