GUIのデバッガで追うようにコードの問題個所を 正確に特定できる静的解析ツールとは 〜 大規模開発での「同じ修正を2度行う」 悲劇から開発者を救う「Coverity 5」 〜 |
開発現場で当たり前のように使われるようになってきたソースコードの解析ツール。その最大の課題は、どれだけ正確に多くの致命的なバグや不具合を検出できるかだ。この課題に対する1つの回答としてコベリティが提示するのが、11月11日に発表されたばかりの「Coverity 5」だ。本稿では、「Coverity 5」の概要とその特長をいくつか紹介する。
ソースコード解析ツールが当たり前な時代の 課題を解決する「Coverity 5」と「CIC」 |
「Coverity 5」を理解するには、まずコベリティが提供するスイート製品「CIC(Coverity Integrity Center)」について概要を知っておく必要がある。CICは、「Static Analysis(静的解析)」「Dynamic Analysis(動的解析)」「Build Analysis(ビルド解析)」「Architecture Analysis(アーキテクチャ解析)」という4つの解析ツールを備える。また、解析結果をGUIのダッシュボードで管理できる「CIM(Coverity Integrity Manager)」という、Webブラウザで操作するアプリケーションや、Microsoft Visual StudioやEclipseのプラグイン、カスタマイズ用のSDKなども含まれている(図1)。
図1 「CIC(Coverity Integrity Center)」と「Coverity 5」 |
もちろん「CIC」は、スイート全体もしくは、静的解析ツール単体で導入することもできる。「Coverity 5」は、「Coverity Prevent」として知られていたC/C++、C#、Javaのソースコード静的解析の機能を向上した「Static Analysis(静的解析)」を含む4製品をカバーするCICに、「CIM」を追加してコード解析データの管理機能を強化したという位置付けだ。
GUIのデバッガで追うように 直感的にコードの問題個所を特定 |
「Coverity 5」の新機能の核ともいえる「CIM」は、ひと言でいうと「バグレビューツール」だ。その主な機能は、不具合データのリスト化はもちろん、バグ密度や解析された不具合データの危険度のグラフ化、修正の進ちょく具合の時系列表示などで、さまざまなソースコード解析データを“可視化”する。
また、リスト化された不具合からリンクして、問題個所がソースコードのどこにあるのかをGUIのデバッガで追うようにレビューすることもできる。問題のソースコードには、問題の詳細な内容を明記したコメントが付与され、関連する別ファイルのソースコードをインラインで表示できるため、画面遷移することなく効率的・直感的に問題を深く追究できる(図2)。
図2 ソースコードの問題個所を表示(画像をクリックすると、拡大) |
大規模開発での「同じ修正を2度行う」 悲劇から開発者を救うマージ機能 |
そのほか「CIM」の特長としては、大規模開発で頻繁に起こる「同じ修正を2度行う」悲劇から開発者を救うマージ機能も見逃せない。「CIM」では、ソースコードの解析データを「プロジェクト」という単位で管理する。ソースコードの実態のまとまりとは別に、仮想的なまとまりで管理することによって、たとえ異なるパスの異なるファイルで同一の不具合が起きたとしても、それを内部的にマージ可能だ。
例えば、共通のフレームワークを基に、プラットフォームが異なるシステムAとシステムBを複数開発している場合、「CIM」上のプロジェクトAではフレームワークとシステムAをまとめて管理し、プロジェクトBではフレームワークとシステムBをまとめて管理する。プロジェクトAで不具合を修正したソースコードが、システムAの中の共通フレームワークのものだった場合、プロジェクトBにも、その修正が反映される。プロジェクトBでも共通フレームワークの同一の不具合を修正してしまうという“悲劇”は起こらないのだ。
このように、ソースコードや、その修正を管理しマージするというと、SubversionやCVS、Gitなどのいわゆる「バージョン管理ツール」が思い浮かぶが、「Coverity 5」は、それとは異なるツールだ。ソースコードの差分を上乗せすることはなく、解析するたびに「スナップショット」という固まり単位で不具合データのステータスやコメントを保持することによって拡張性の向上につなげている。
◇
開発者や品質管理者に魅力的な機能が追加されたコベリティの新しい静的解析ツールだが、まだまだ紹介し切れない機能が多数あり、その使いどころやROI(費用対効果)、事例、動作環境、静的解析機能の詳細なども気になるところだ。それらについては、TechTargetジャパンの「製品レポート記事」が詳しいので、既存のソースコード解析ツールに満足できない読者は、ぜひご一読を。
|
提供:コベリティ 日本支社
アイティメディア 営業企画
制作:@IT 編集部
掲載内容有効期限:2009年11月30日
TechTargetジャパン 製品レポート |
|
|
ET2009(組込み総合技術展)出展決定! |
11月18日(水)〜20日(金)にパシフィコ横浜にて開催される「Embedded Technology 2009/組込み総合技術展」に、coverityの出展が決定しました(専用ブース/小間番号: C‐34
)。
●セッション1 会場 : アネックスホール[F203] ●セッション2 会場 : オープンステージ |
関連リンク |
関連記事 |
・ビルドプロセスの「ブラックボックス」を解消する解析ツール (@IT MONOist) ・コベリティ、開発の問題発見・未然防止を実現する2製品を発売〜開発の初期段階で問題を解決し、コスト効率に貢献〜 (@IT NewsInsight) ・ソフトウェアテスト・ミーティング2008 (@IT 情報マネジメント Special) ・組み込みソフトウェア 品質向上セミナーレポート (@IT MONOist Special) ・C#用の静的解析ツール、コベリティが提供へ〜C、Javaに続いて対応〜 (@IT NewsInsight) ・関数の平均長と欠陥の量に相関なし、米コベリティ〜オープンソースで5500万行を解析〜 (@IT NewsInsight) ・マルチスレッドアプリのコードを動的に解析するツール、米コベリティ〜Javaのデッドロックや競合状態に困っている人の強い味方?〜 (@IT NewsInsight) ・動的テスト以上のバグ検出能力 〜 クリティカル分野で採用が続出 (@IT MONOist Special) ・500万行のソースコードを一晩で解析できるソフト〜誤検知率も20%以下を実現〜 (@IT NewsInsight) |