CodeZine(コードジン)

特集ページ一覧

「FindBugs」「Jenkins」をサポートし、不具合検出の幅が大きく広がった静的解析ツール「Coverity Static Analysis 5.5」

開発者によるソースコード解析をサポートし、バグの未検出リスクを軽減

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/10/05 11:00

目次

専用コマンドを実行するだけで、ビルド~解析~結果の送信が完了

 Coverity Static Analysis導入の事前準備であるコンパイラの設定は、GNU gcc、MS Visual Studio、Wind River C/C++、TI Code Composer、ルネサス C/C+コンパイラ、QNX C/C++、Freescale Codewarrior、ARM C/C++など、使用しているコンパイラに対して次のコマンドを1度実行するだけでOKです。

コンパイラ設定のコマンド
cov-configure -comptype <コンパイラタイプ> --compiler <コンパイラコマンド名> [<オプション>]
GNU gccでの実行例
GNU gccでの実行例

 次に、CIMサーバ上にプロジェクト/ストリームと呼ばれる解析結果の保管場所を準備します。

CIM上で、解析結果保管場所を設定
CIM上で、解析結果保管場所を設定

 準備が整ったら、解析のためのビルド処理を行います。次のように、既存のビルドコマンドを呼び出せば、ビルドを監視して解析に必要なデータを中間ディレクトリに保存します。

ビルド処理のコマンド
cov-build -dir <中間ディレクトリ> <makeやantといったビルドコマンド>
ビルド処理の実行例。ビルト用スクリプトやソースファイルの変更は不要
ビルド処理の実行例。別途スクリプトやソースファイルの変更は不要

 続いて、解析処理です。ビルド処理と同様にこちらも次のような専用コマンドを呼び出すだけ。ビルド処理で中間ディレクトリに保存されたデータの解析が始まります。

解析処理のコマンド
cov-analyze -dir <中間ディレクトリ> [オプション]
解析処理の実行例。不具合チェッカーが解析を行うため、テストケースの作成は必要ない
解析処理の実行例。不具合チェッカーが解析を行うため、テストケースの作成は必要ない

 解析結果を管理するため、CIM側に結果を送信します。これも専用のコマンドで行います。

CIMへ解析結果を送信するコマンド
cov-commit-defects -dir <中間ディレクトリ> --host <CIMホスト名> --stream <CIMストリーム名> --user <CIMユーザー名> --password <CIMパスワード>
中間ディレクトリに保存された解析結果がCIMに送信される
中間ディレクトリに保存された解析結果がCIMに送信される

 CIMに送信された不具合の情報は、WebブラウザかIDEから、閲覧・管理ができます。検出された結果は、不具合の影響度が自動判別されます。また柔軟なフィルタ機能により、不具合修正の優先順位をつけることができます。

左ペインで「影響度:高」にチェックしてフィルタした例
左ペインで「影響度:高」にチェックしてフィルタした例
不具合閲覧画面では、ソース中に分岐条件を表示し、どのパスで障害が発生するかを容易に把握できる
不具合閲覧画面では、ソース中に分岐条件を表示し、どのパスで障害が発生するかを容易に把握できる

 Coverity Static Analysisが発見可能な不具合は、リソースリーク、未初期化の変数、並列処理時の問題、メモリー破壊、不正なメモリーアクセス、APIの誤用、インデックス処理の間違い、プログラムのハングアップ、パフォーマンス、セキュリティの問題、コードの保守性など多岐に渡ります。次ページから、最新バージョンである5.5で強化された点について説明します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 森 英信(モリ ヒデノブ)

    就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5