PPL サマースクール 2008が告知されています。内容はおおいわさんのFail-Safe Cと、coverity 社の人による Thread Analyzer for Java とかいうツールの紹介だそうです。
それとは関係ないんですが、coverity 社がやってる Coverity Scan というサービスがあります。coverity 社の製品の Prevent という静的解析ツールのデモみたいなもので、Apache とか OpenSSL とかのオープンソースプロジェクトに対して Prevent で検査した結果を無償提供してくれています (参考) 。ただし脆弱性のヒントになる可能性があるので、各プロジェクトの開発者のみに公開。
ここぞとばかり Ruby のコミッタ権限を活用して Ruby の結果を見せてもらったんですが、これ、かなりすごいです。
- 鬼車が /x{1,1}/ でメモリリークするとか (r18265)
- 鬼車が malloc の失敗時にメモリリークするとか (r18266)
- YAML::Syck が堂々とメモリリークするとか (r18297)
- 埋め込み RSTRING のバッファが足りないとか (r18289)
- Symbol#inspect にデッドコードがあるとか (r18268)
- ポインタ参照した後で NULL チェックしてて意味ないとか (r18270)
- bigdecimal の乗算でメモリリークしかねないとか (r18296)
- bigdecimal の条件文が明らかに変だとか (r18275)
- 他
がんがんバグや変なコードを見つけてくれます。かっこいい!これはもう、絶対使うべきです。1 年間でたったの 600 万円!
false positive は 1/2 〜 3/4 くらいだった感じ。false positive だらけで見てらんないことはなかったです。よく調べないと false positive だとわからないような、きわどいところも多かった。
Prevent がやってることは多分そんなに難しいことじゃなくて、決められた検査項目にひっかりそうなコードのパターンを inter-procedural かつ網羅的に探しまくってるだけだと思います。が、そのパターンを洗い出すのにものすごく労力がかかってそうな印象です。600 万円の大半はそのノウハウ代だと思います。いやでもその探索を常識的な時間で終わるのもすごいか。
ちょっと残念なのは、Coverity Scan の運営が少しいい加減なこと。無償サービスの運営にケチつけるのもどうかとは思うんですけどね。まず、書いてある通りにやってもアカウントを作る画面に行けなかった。Coverity Scan の窓口にメールしたらエラーメールが帰ってきた。しょうがないので Coverity のビジネス用の窓口にメールしたら (迷惑) 、特にコミッタであることの認証もなくアカウントを作ってくれた。ログインしたら、去年の Ruby に対する結果しかなくて古すぎた。「最新版の結果見せてー」と言ったら、「サーバ引っ越し中だから 1 週間ほど待って」と言われて、3 週間放置された。催促したら、とりあえず手動で更新してくれたみたい。ありがとう!
いちおう、Coverity Scan はオープンソースプロジェクトなら何でも登録してくれるみたいです。Ruby は最初から登録されていたのであんまりちゃんと読んでないですし、上記の通りの運営なのですんなり行くかは怪しいですけど。
Ruby の場合はそれなりに長い間いろんな人がいろんな環境で動作確認してるせいか、実用上問題になるようなバグはさすがに見つからなかったです (Syck のメモリリークはなるかな) 。でもたぶん、それほどユーザがいないようなプロジェクトや、会社とかクローズドで開発してるプロジェクトでは、Prevent をかけるのとかけないのでは絶望的な差が出るに違いないです。なんか回し者みたいですね。一銭ももらってません。
修正: PTT サマースクール → PPL サマースクール。なんでこんな間違いを……。スミマセン。