1400万行ものC/C++コード解析が2時間で
開発プロセスへの統合が進む
最新ソースコード静的解析ツール
2011/10/5
コベリティが提供するソースコード静的解析ツールの最新版「Coverity Static Analysis 5.5」がリリースされた。本稿では、Coverity Static Analysisの概要と特徴とともに最新版の新機能と機能強化点をまとめて紹介する
どの業種でのソフトウェア開発にもいえる「永遠の課題」
「ソフトウェアの品質をいかに高めるか」。これは開発者に限らず、ソフトウェア開発に携わる多くの人々にとって「永遠の課題」といえよう。特に今日では、エンタープライズシステムもJavaのWebアプリケーションとして構築することが一般的になっており、ソフトウェアの大規模化・複雑化が進んでいる。そんな中、テストを入念に行い、品質を高めていくための取り組みは、ますます重要性を増している。
しかし、たとえ総合テストの段階で運良くバグを発見できたとしても、その修正には多くの工数が掛かる。これはよく知られていることだが、工程の下流に行けば行くほど、バグの修正に要する工数は飛躍的に増加してしまう。そのため、上流工程で多くのバグをつぶしておくことが重要になってくる。
そのための手段として、近年多くの企業が導入を進めているのが、単体テストや結合テストの段階でソースコードを自動解析してバグ/不具合を検出するツールである。中でも、コベリティが提供する自動不具合検出ツール「Coverity Static Analysis」(以下、CSA)は、数々の大規模プロジェクトで採用されてきた製品だ。全世界ですでに1000件以上の導入実績があり、航空、宇宙、防衛、医療、家電メーカー、金融、ゲームなど、実に幅広い業界のソフトウェア開発プロジェクトで成果を挙げているという。
CSAは、C/C++、Java、C#言語で書かれたソースコードの自動解析ツールとして広く知られてきたが、2011年10月4日にリリースされたばかりの最新バージョン「Coverity Static Analysis 5.5」では、前述したような背景を踏まえ、静的解析技術の開発プロセスへの統合を加速する機能が大幅に強化されている。
Javaアプリケーションの開発現場で広く使われているさまざまな開発ツールとの連携機能が強化されたほか、C/C++ 言語向けには新たにマルチコアCPUの特性を生かした並列処理のコード解析を可能にしたことで、解析処理のスピードが劇的に向上している。これはあくまでも一例だが、CSAの旧バージョンを利用していたある開発現場では、1370万行のソースコードを解析するのに8時間半かかっていたが、CSA 5.5で同じソースコードを解析したところ、処理時間は約2時間にまで短縮されたという。
高い検出精度と容易な運用を両立した自動解析ツール
現在、ソースコードの自動解析ツールはさまざまなものが存在するが、CSAはその中でも特徴的な機能を数多く備える製品である。
一般的な解析ツールの中には、あらかじめユーザーが設定したコーディング規約に沿っているかどうかだけをチェックするようなものも存在する。しかしCSAは、豊富な検出パターンを基に、ソースコードの全実行パスの中から深刻でクリティカルな不具合を高い精度で検出する。また、この手のツールには付きものの誤検出も極力抑えられている。
開発者に掛かる負担が小さく済むのも、CSAの大きな特徴の1つだ。解析を行うために、ソースコードに手を加える必要は一切ない。あらかじめ、テストケースを準備しておく必要もない。ただ普段通りにビルドを実行すれば、その最中にCSAが自動的にバックグランドで解析処理を行ってくれるのだ。ツール自体の導入・設定もわずか数時間で完了するため、手軽に利用を始められる。
なお、CSAのこうした数々の特徴は、別途「人間の“限界”を補完する、誤検出率15%以下の静的解析ツールとは」に詳しい説明があるので、ぜひそちらを参照されたい。
Javaやアジャイル開発、
デスクトップ解析への対応を新たに強化
CSA 5.5では、こうした数々の特徴に加え、Java開発環境や大規模エンタープライズ開発環境への対応が強化されている。例えば、Java開発で広く使われているソースコード解析ツール「FindBugs」との統合もその1つだ。CSA 5.5をインストールすると、自動的にFindBugsもインストールされ、両者を同時実行できるようになる。これによりCSA単体、あるいはFindBugs単体で解析処理を実行する場合と比べ、広い範囲のバグを検出できるようになるのだ。また両者の解析結果は、CSAの管理コンソール「Coverity Integrity Manager」(以下、CIM)の画面上でまとめて管理できる。
また、オープンソースのCI(継続的インテグレーション)ツール、Jenkins(旧Hudson)との統合も果たされた。CIとは、もともとアジャイル開発に端を発する品質管理手法で、ビルドと統合テストを開発の早い段階から繰り返し実行することでソフトウェアの品質を高めていこうというものだ。これをツールとして具現化したJenkinsは、定期的にビルドやユニットテストを自動実行し、いち早くコンパイルエラーやバグを検出・管理する機能を備えている。
これにCSAのソースコード解析処理が組み込まれることによって、CIの取り組みが強化されるわけだ。CSAが検出したバグ情報は、Jenkinsのプロジェクト画面から参照でき、さらにそこからCIM上の詳細な解析結果も参照可能だ。
図1 Jenkins上でCSA 5.5のコード解析結果を見られる
さらに、CSA 5.5ではEclipseやMicrosoft Visual Studioのプラグインとしての機能が強化され、開発者にとっての使い勝手が向上している。これと、先ほど述べた解析処理の大幅なスピードアップを組み合わせると、デスクトップ環境でのソースコード解析が容易に実現する。
これまでのソースコード解析処理といえば、結合テスト用のビルドに対して長時間かけて実行するのが一般的なやり方だった。しかしCSA 5.5では、統合テスト前の単体テストの段階で、開発者がおのおのの開発環境上で解析処理を手軽に実行できるようになった。これにより、早期にコードの不具合を検出できるはずだ。
図2 ローカル解析環境と処理フロー
CSA 5.5の効果を実体験できる無料トライアル
本稿で紹介したもの以外にも、CSA 5.5では数々の機能強化が行われており、Javaのエンタープライズ開発に携わる人々にとっても身近なツールに仕上がっている。
コベリティではCSA 5.5の無料トライアルサービスも提供しており、無料とはいえ、実際にユーザーが本番開発環境で扱う大量のソースコードを対象に本格的な解析処理を試すことが可能だ。これを機にぜひ一度、フォームから申し込んで最先端のソースコード解析技術の効果を体験してみてはいかがだろうか。
トライアルに応募して抽選でAmazonギフト券プレゼント
- この記事をお読みになった方限定で、下記の応募フォームから無料トライアルにお申し込みいただけます。さらに、その中から抽選で5名さまに「Amazonギフト券(5000円分)」をプレゼントいたします。以下のフォームより必要事項をご記入ください。
- Amazonギフト券はamazon.co.jpよりお送りします。当選のご連絡は賞品の発送をもって代えさせていただきますので、あらかじめご了承ください。
- *のある項目は必須の回答です。
- お預かりする個人情報の利用者と利用目的については、以下のプライバシーポリシーをご確認ください。
Coverity, Inc
アイティメディア株式会社
- 当フォームの応募申込期間は、2011年11月4日までです。
たくさんのご応募ありがとうございました。
提供:コベリティ 日本支社
アイティメディア営業企画/制作:@IT 編集部
掲載内容有効期限:2011年11月4日
セミナーのご案内
コベリティ製品セミナー 「 静的解析をまだ知らないあなたへ」 |
|
|
|
|
CSA 5.5 無料トライアルの流れ
関連リンク
関連記事
- 人間の“限界”を補完する、誤検出率15%以下の静的解析ツールとは (@IT Special)
- GUIのデバッガで追うようにコードの問題個所を正確に特定できる静的解析ツールとは (@IT Special)
- ビルドプロセスの「ブラックボックス」を解消する解析ツール (@IT MONOist)
- コベリティ、開発の問題発見・未然防止を実現する2製品を発売〜開発の初期段階で問題を解決し、コスト効率に貢献〜 (@IT NewsInsight)
- C#用の静的解析ツール、コベリティが提供へ〜C、Javaに続いて対応〜 (@IT NewsInsight)
- 関数の平均長と欠陥の量に相関なし、米コベリティ〜オープンソースで5500万行を解析〜 (@IT NewsInsight)
- マルチスレッドアプリのコードを動的に解析するツール、米コベリティ〜Javaのデッドロックや競合状態に困っている人の強い味方?〜 (@IT NewsInsight)
- 500万行のソースコードを一晩で解析できるソフト〜誤検知率も20%以下を実現〜 (@IT NewsInsight)