
![]() |
iPhoneアプリ開発に関する内容を中心とした、開発者Natsuの記録。 開発Tipsや読んだ本の紹介などなど。 |
Natsu's note Category
Xcode の最新10件のエントリー
[Xcode] 実機データのダウンロードと更新
Xcode : エディタの縦分割
Xcode : Product validation (ビルドプロダクトを検証)
Xcode : コピーライトに自分の会社名を自動で入れる
Xcode : メソッドリストにコメントを表示
iPhoneアプリ開発:XcodeのBuild and Analyze
LINKS
NATSU'S NOTE TOP
PROFILE
CONTACT
MediaMarker




09.10.26 iPhoneアプリ開発:XcodeのBuild and Analyze
iPhone, iPod touchアプリ開発、Tips集の記念すべき第一回として、先日感動した「Build And Analyze」機能についてまとめる。
これを使うと、Xcode上で静的解析を行うことができる。
つまり、ビルド時に、コードをチェックして不整合を指摘してくれる機能なのだ。
解析エンジンはClangだ。これまでは、ターミナルを起動してClangを実行させる必要があったようだが、最新のXcode(Xcode3.2もしくはそれ以上)では、Xcode上で簡単に利用することができるようになった。これを使わない手はない!のだ(ちなみに、Natsuは、ターミナルでClangを実行させたことはない・・・)。
そして、この結果の見え方がまたすごい。矢印で問題点を順に指摘してくれる。まさに、先生のよう。笑
これを使えば、あるレベルまでは、非常に簡単にバグを減らすことができるだろう。
できること
コードレベルで以下のチェックをしてくれる。
・ロジック:未初期化変数の使用や、ヌルポインタの参照等。 ・メモリ管理:リークチェック等。 ・デッドストア:未使用変数への代入等 ・API usage:環境依存のAPI usage使用方法
いたって簡単。
Xcodeのビルドメニューから、「Build and Analyze」を選択する。これだけ!
解析例
一番役に立ちそうな、メモリ管理の例をふたつと未初期化変数の例をひとつ挙げてみる。
先に言っておくと、ba_test1とba_test2には、バグが潜んでいる。そして、ba_test3には、今の時点ではバグとは言い切れないかもしれないが、危険なコードが潜んでいる。
注意:下の図はXcodeのスクリーンショットそのままなので、図中の青矢印もXcodeが表示してくれたものです。
|   |
ba_test1 (Potential leak)
ba_test2 (Incorrect decrement of the reference count)
ba_test3 (Uninitialized value)
|
もっと便利な使い方
上では、メニューから解析ツールを起動する方法を説明したが、ビルドするごとに解析することも可能だ。
プロジェクトのビルドオプションで、「静的アナライザを実行」にチェックをしておけばいい。

ただし、プロジェクトの規模が大きいと解析に時間がかかるため、開発効率を低下させかねない。
自分の開発状況と、バグの潜み具合、その他もろもろに応じて、手動と自動を使い分けよう。
なお、ビルドオプションを利用する場合、Debugビルドでのみ有効とし、ReleaseやDistributionでは無効としておくことも、もちろん可能である。
Natsuは、このような使い分けをしている。
参照ドキュメント
Xcode project management guide
関連する本(リファレンスカウンタ方式のメモリ管理)
詳解 Objective-C 2.0 (荻原 剛志)
05-02章(p.90)〜05-04章(p.105)
ものすごくわかりやすい!!
|
NatsuのiPhone, iPod touchアプリ
|
|
||||||||




