« ソフトウェアの正しさ | トップページ | Pythonでファイルやディレクトリのリストを作る »

テクノロジーの勝利

Preventという静的コード解析ツールがある。

コベルティという会社が販売しているのだが、確か、この春から名前を変えて再デビューしているはずだ。とにかくこの冬はPreventという名前だった。

とにかく、そのPreventに、大昔のCのソースコードを解析させてみた。

そのソースコードは、長年にわたって改造が繰り替えされた結果、誰もきちんと保守できなくなってしまい、原因不明の不具合が頻発しているというソースコードだ。さらに、設計書の更新もしていないため、何が正しい仕様なのか、分からなくなっている。

さて解析だが、Preventの処理が途中で止まってしまう。

ソースコードを調べてみると、"far"、"near"という懐かしいキーワードが見つかった。これではダメだ。

Preventのエラーメッセージを見てみると、ヘッダファイルまわりも、どうやらgccではコンパイルできないらしい。

気を取り直して、"far"と"near"を#defineで消して、コンパイラもVisualC++に変えて再挑戦だ。

今度はうまくいった。

解析もできているようだ。

未初期化変数が多いな。

他にもどんどん不適切な記述が見つかる。

お約束のように、バッファオーバフローが見つかる。

今回の解析で見つかったバグを修正すれば、原因不明の不具合のいくつかは解決されるだろう。

このソースコード、できた当時は十分な静的解析を受けられなかったに違いない。

大昔のソースコードが、最新のテクノロジーで解析されて修正されていく。

まさにテクノロジーの勝利といったところだ。

感慨深い。

★WOZ★

|

« ソフトウェアの正しさ | トップページ | Pythonでファイルやディレクトリのリストを作る »

ソフトウェア」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1286769/34215883

この記事へのトラックバック一覧です: テクノロジーの勝利:

« ソフトウェアの正しさ | トップページ | Pythonでファイルやディレクトリのリストを作る »