きりかノート 3冊め

おあそびプログラミング

第29回 Cocoa勉強会でclangの静的解析の話をしてきた

とりあえず自分の資料は「clangでObjective-Cプログラムを静的解析」として公開しとく。clangのscan-buildコマンドで、Objective-Cプログラムを静的コード解析してメモリリークなどのバグが見つけられたりするという、マユツバなようで本当の話。

水曜日あたりにStepwise経由で"Noodlings » New Tool On The Block: The LLVM/Clang Static Analyzer"を見て、おもしろそうなので発表することに。cfe-dev MLにやたらと"static analyzer"という語が飛び交っているのには気づいていたけれど、ちゃんと読んでなかったので、ここまで動作するものだとは思っていなかった。

なかなか面白いので、手元にObjective-C/Cocoaのプログラムある人は試してみるといいと思うよ。

PDFでスライドを公開しても反応が薄いよう(前回のSIMBLはけっこー自信あったのに)なので、HTML資料をちゃんと書いてからスライドつくることにした。資料はさくっと書けたので、スライドはRabbit製にしてみた。ちょうど今、MacPortsパッケージのほうをいろいろ構成いじってるので、その検証も含めて。

手元のRuby 1.8.7-p22とRuby-Gnome 0.17.0-rc1だとアレなので、テーマ中に

 GC.disable

といれるという大冒険。これで問題なく動いた。

てきとーPortfile

バイナリのcheckerをダウンロードすればすぐ使えるけれど、そんなときでもPortfile

 # $Id: $
PortSystem 1.0

name clang-checker
version 60
revision 0
categories devel
maintainers kimuraw
description LLVM/Clang Static Analyzer
long_description LLVM/Clang Static Analyzer
homepage http://clang.llvm.org/StaticAnalysis.html
master_sites http://keeda.stanford.edu/~kremenek/checker/
use_configure no
build {}
destroot {
xinstall ${worksrcpath}/ccc-analyzer ${destroot}${prefix}/bin
xinstall ${worksrcpath}/clang ${destroot}${prefix}/bin
xinstall ${worksrcpath}/scan-build ${destroot}${prefix}/bin
xinstall ${worksrcpath}/sorttable.js ${destroot}${prefix}/bin
}
distname checker-${version}
worksrcdir ${distname}
checksums md5 78b2d77f4a12d4f09ecec7bf69e8504a \
rmd160 acebdae2755447cdbb21881ef86d84effc01c1f0 \
sha1 daaf5d2d508e7b390ed4fdafd4b3c7c3088d8f66