一晩で500万行のコードのバグを自動的に解析 65
ストーリー by mhatta
ほんとに役に立つのかな 部門より
ほんとに役に立つのかな 部門より
ソースコードの静的解析ツールを提供する 米コベリティが、豊通エレクトロニクスとパートナーシップを締結し、 さらに 9月には東京に日本法人を設立することを発表したとのこと。 コベリティのツールは、C、C++、Javaのコンパイル時にコードを静的に解析し、プログラムの不具合やセキュリティ脆弱性を発見するもの。 「品質欠陥」「セキュリティ欠陥」「並列処理欠陥」の3種類のチェッカーが動作して不具合を発見し、パスの解析やプロシージャ間解析も行えるのが特徴とのことで、 解析速度は500万行程度のソースコードであれば一晩で行えるらしい。やたらに図体がでかいシステムの場合は結構需要がありそうだ。
摘要には注意が必要 (スコア:4, すばらしい洞察)
客 :「このシステムは品質が低いのではないか、このツールで検証して報告を出すように」
営業 :「はい、わかりました。」
技術者 :「え、そんなもの使うの・・・(やめてくれ)」
プロマネ:「結果はどうなった?」
技術者 :「2万件の障害が出ました・・・」
開発初期からデイリーで動かさないと、こんなことになるプロジェクトが山のようにありそう・・・
#ご利用は計画的に
Re:摘要には注意が必要 (スコア:1, 興味深い)
もう何年もやってるプロジェクトじゃ、いまさら修正しろったって無理無理。
直せっていうなら直してもいいけど、それによって別の問題が起きないとは保障できないぞ?
#ちなみに、そのときは無理!今後追加するところだけ対応する、という真っ当な(?)結論に落ち着きました。
今日もどこかでデスマーチ (スコア:2, 興味深い)
以下同文。
「まあ汚いコードだから」というのは分からなくもないが、
「(後から決めた)命名規則に合わないから」というのまで
全部修整しろというプロマネには、本気で殺意を覚えました。
まあ、あのプロジェクトは納期が大幅に遅れて、大赤字だして、
少数の鬱病患者と多くの退職者をうんで、プロマネも逃げるように
辞めていったけどね。
彼は、いったい今どこで何をしていることだろう。今日も
どこか別の会社で、元気にデスマーチを量産しているのかもね。
Re:摘要には注意が必要 (スコア:1, おもしろおかしい)
Re:摘要には注意が必要 (スコア:4, すばらしい洞察)
チェッカーにかからなくなるまで「適当に直す」手法を繰り返すことで、通常のバグが減っていくかわりに、みつけにくいバグが増殖していきます。
これら「耐性バグ」が、将来問題になると予想。
やめてくれ (スコア:0)
障害表の発行は発見から24時間以内というSLAなのでAC
Re:やめてくれ (スコア:1)
出力結果から障害連絡表を作成するのを自動化すればいいだけですよ. まさに定型文書処理の典型的な適応例. 新人のperlやrubyの研修に最適です.
# プリンタが壊れたのでID
Re:やめてくれ (スコア:1)
という見解をつけて返却するところまで自動化しましょう。
--- (´-`)。oO(平和な日常は私を鈍くする) ---
Re:摘要には注意が必要 (スコア:0)
プロジェクトへは適用だと思うけど
あのソフトなら! (スコア:3, すばらしい洞察)
(ぐぐってみたら、2006年のコンピュータの9月の記事に
そう書いてあるらしい)、単純計算で昼夜もぶっつづけで
処理したら5日間。
#規模が大きくなればなるほど時間が余計にかかるなら
#この限りではないですが。
Re:あのソフトなら! (スコア:1)
現行のサポートが続くならそれはそれで嬉しいが。
Re:あのソフトなら! (スコア:0)
間を取ってO(N^2)としても、ソースが10倍なら時間は100倍ですな。
5M行が一晩で済むなら並列化なんてしとらんでしょうが、
M$様がお客についてくれるなら気合入れて並列化するかも。
PREfast (スコア:3, 参考になる)
自分自身 (スコア:2, おもしろおかしい)
某メモリリークやバッファオーバラン検出ソフトはよくクラッシュしていた、、、
他人のソースを指摘する前に自分のソースのバグを直せってーのって思ってたYO。
Re:自分自身 (スコア:1)
もちろんそんな事されないようにCOBOLで書いてます。
とかじゃない?
細かいアーキテクチャの差とか (スコア:2, おもしろおかしい)
64bit系だと これだけでNGなんだもんなぁ。頭が古いだけ?
# 64bitではNULL = 0 とは限らないそうで... (Binary Hacksの Hack #49)
むしろ自動で(pointer !=/== NULL)の式に変換すると便利だけど、さすがにやらないよな。
この手のがカーネル系に上手く適用できなくて泣いたことがあるのでID
# カーネルに適用できるなら、*BSD/Linuxに常に活用されていたりすると嬉しいんだけどな。(定点評価みたいに)
M-FalconSky (暑いか寒い)
Re:細かいアーキテクチャの差とか (スコア:2, 参考になる)
64bit に限らず NULL の値は 0 ではない。
そして NULL の値が 0 ではない処理系においても NULL == 0 は
互換性のために真として扱うというのが今の ANSI の規格のはず。
! 演算子でも同様の配慮がされているはず。
Re:細かいアーキテクチャの差とか (スコア:1)
# 勉強になったと考えて、精進々々
M-FalconSky (暑いか寒い)
Re:細かいアーキテクチャの差とか (スコア:1, 興味深い)
んなわきゃーない。Binary Hacksのどこをどう読んだらその結論になるんだ。
Re:細かいアーキテクチャの差とか (スコア:1)
ぜんぜんちげー<自分
# 嗤うネタにでもしてくれ
M-FalconSky (暑いか寒い)
Re:細かいアーキテクチャの差とか (スコア:0)
コード例だけ読んでないか?
とりあえず「まとめ」の項だけでも読み直してみるべきでは.
Re:細かいアーキテクチャの差とか (スコア:0)
それ以前に、そういった過去の遺産的な記述方法が間違いになる
ということは、未来永劫ありえません。
青臭いな。君。
既存の静的ツールとの違いは? (スコア:1, 興味深い)
MISRA-Cなり他のコーディング規約等に従って、
バグを混入させやすい書き方を排除するための
静的解析ツールなら各所から出ていますよね。
例えば、QACとか、
http://www.toyo.co.jp/ss/qac/index.html [toyo.co.jp]
フリーのものでもなんかあったかと。
--
# 僕には小人さんがついてるから問題なし
Re:既存の静的ツールとの違いは? (スコア:1, 興味深い)
理論上soundnessが保証されなくても最悪計算時間がNPでも、実用上十分高速でfalse positiveが少なければ役に立つし、うまくそういうバランスを見つけて企業相手に商売すればけっこう金になります。
Re:既存の静的ツールとの違いは? (スコア:0)
このファイルのこの部分は問題ないから無視してね、
という指定が細かくできるほうが実はうれしい
Re:既存の静的ツールとの違いは? (スコア:1)
> このファイルのこの部分は問題ないから無視してね、
> という指定が細かくできるほうが実はうれしい
その指定、セコムしてますか?
Re:既存の静的ツールとの違いは? (スコア:1, おもしろおかしい)
仕様とのチェックもしてくれないかな~ (スコア:1)
------------
惑星ケイロンまであと何マイル?
仕様や要求をチェックしてほしい (スコア:1)
コーディングスタイルや仕様との不整合など。
それ以前に、ダメな仕様や要求をチェックしてほしいが
そもそも矛盾している仕様とかが出たらコードが良くても意味ないし
Re:仕様とのチェックもしてくれないかな~ (スコア:0)
こべりてぃ (スコア:1)
公式名なんですかねえ?
「河馬」の語感が気に入らなかったんだろうか??
FYI: オープンソースとの関係 (スコア:1)
Coveiryさんは、いくつかのオープンソースプロジェクトのソース検査をしてくれているところですね。
http://itpro.nikkeibp.co.jp/article/USNEWS/20060112/227134/
過去のストーリー (スコア:2, 参考になる)
過去ストーリー:
「Linuxカーネルは商用ソフトよりバグが少ない [srad.jp]」
おねがい。 (スコア:1, おもしろおかしい)
# 恥ずかしいコメントいっぱい書いてるヲレ。
Re:おねがい。 (スコア:1, おもしろおかしい)
自動生成 (スコア:1)
・・・・・・ただいま解析中・・・・・・
24時間後にメッセージが出ている!-> 「40026行目でエラーがありました」
とか言って、IEのscriptエラーのように、外部ファイルを取り込んだ結果、行番号
がずれている とか言うオチは無いですよね・・。
個人的には仕様書を読ませて、仕様バグを発見してくれるソフトを先に希望します。
プログラム完了後テスト工程に入って仕様上の問題点で改修になる事が多々ありますので・・。
Re:自動生成 (スコア:1)
またその上のチェックツールが出来て
クライアントのチェックツールが出来るわけですね(ぇー
暇になれば「忙しい」が羨ましくなり 忙しくなれば「暇」が羨ましくなる。
Re:自動生成 (スコア:1)
たぶん希望のものとは違くなってしまうかと思いますが、Alloyなんてものもあります。
http://alloy.mit.edu/ [mit.edu]
仕様をAlloyのプログラムで表現するときにバグがのって....なんてことになりかねないけどね。
Re:自動生成 (スコア:0)
如何に、改修が無いような設計にするか、
改修があっても耐えられる実装にするか、
改修があることを見越した精神状態で作業をするか
は、会社によってまちまちですね。
潜水艦危機には (スコア:1)
コードが違うから?
行数が少ないから?
どんなソフトにもバグはある (スコア:1)
とはいえ、相対的に品質がよくなるならそれでもいいか。
MIYAZAKI Yasushi
10万行のソースに (スコア:0)
じゃあ (スコア:0)
一晩で500万行 (スコア:0)
ぜひ,我が社にお招きしたいものです.
#え,この小人さんはコードを書いてくれないんですか...
#これで作業が減るかと思ったのに...
Re:オプションで追加されるその他チェック項目 (スコア:1)
完ぺき主義とか。前言撤回とか。空想家とか。
Re:矛とプログラマ (スコア:2, おもしろおかしい)
Re:矛とプログラマ (スコア:1, おもしろおかしい)
Re:矛と盾 (スコア:1)
#それとも、サブジェクトと内容が矛盾しているというメタなお話ですか?
Re:矛と盾 (スコア:1)
「このデバッグ担当者は10個のバグを除去するのに、100行のコードと5個の新しいバグを追加する。」
「この新機能追加担当者は、一日あたり1000行のコードをコピペし、5個の新しいバグを追加する。」
「そのプログラマにこのツールを与えてデバッグをさせれば、バグがなくなって
プロジェクトが完了するのに、どれだけの時間がかかるか計算しなさい。」
Re:検査ツール (スコア:1)
妖精哲学の三信
「だらしねぇ」という戒めの心、「歪みねぇ」という賛美の心、「仕方ない」という許容の心