静的解析と動的解析で検出された不具合の統合表示
デベロップメントテストは、開発者にとってのセーフティ・ネットです。デベロップメントテストを行うことにより、リリース・スケジュールに影響を与えることなく本稼働で不具合が発生するリスクを低下させることができます。
Coverity Static AnalysisとCoverity Dynamic Analysis (Java向け)の統合
Coverity Integrity Managerは、Coverity Static Analysis と Coverity Dynamic AnalysisCoverity Static AnalysisとCoverity Dynamic Analysisを緊密に統合することで、業界で初めて静的解析と動的解析の組み合わせによるソースコード不具合検出を可能にし、解析精度と解析速度の両方を高めた唯一の製品です。
静的解析と動的解析は、互いに補完し合う技術です。静的解析では、可能性のあるすべての実行パスをたどってより広い範囲で不具合検出が行われるのに対して、動的解析ではテスト・ケースで実行されるパスで集中的に解析が行われます。しかし、実行時にだけ発生するようなエラーの場合、静的解析で見逃される恐れのある並列処理関連の不具合も、動的解析を使用すれば特定できることから、Javaアプリケーションでは両方の解析が必要になります。
Coverity Integrity Managerでは、静的解析と動的解析の技術を組み合わせることで不具合検出の精度と速度を高め、その徹底的な解析により競合状態やデッドロック、リソース・リークなどの検出も可能にしています。
静的解析と動的解析で検出された不具合の集中管理
Coverity Static AnalysisとCoverity Dynamic Analysisの両方の解析結果をCoverity Integrity Managerに統合し、一括表示することにより、コベリティ製品で特定されたすべての不具合を簡単に確認、管理することができます。静的解析と動的解析で検出されたすべての不具合を1か所にまとめて表示すると、各不具合のリスクと影響に基づいて不具合を修正できるようになるため、不具合解決プロセスの効率が高まります。また、プロジェクトや製品ポートフォリオ全体にわたって不具合のステータスと傾向を把握できるようになります。
企業全体での配備
Coverity Integrity Managerは、アジャイル開発を行う大規模なグローバル組織向けに設計されており、企業レベルでの仕様に耐えうる基盤コンポーネントで構成された複数階層アーキテクチャを備えています。特に、数百人規模の同時使用ユーザーを抱え、堅牢なアクセス制御と柔軟で拡張性の高いプラットフォームを必要とするチームにも対応できるように設計されています。
柔軟な配備
Coverity Integrity Managerは、集中型および、分散型配備モデルをサポートしています。分散したチームにおいても、Coverity Integrity Managerの使用により、開発チームはパフォーマンスを無駄にすることなく、不具合管理においてより効率的に協力することができます。地理的に分散したチームは、即座に他のチームの開発者とトリアージ情報を共有できます。
不具合管理
「多くの場合、エラーについて説明するのは、エラーを見つけることよりも難しいものです。説明が正しく理解されないと、エラーが無視され、さらには誤検出にもつながりかねません」
「A Few Billion Lines of Code Later(数十億行のコード解析から得たもの)」
数千件もの不具合に直面した場合、何から始めたらよいのでしょうか。Coverity Integrity Managerは、発見された不具合のひとつひとつに関して、その不具合のわかりやすい説明、重大性、不具合の場所を示し、次の3つの重要な問いに答えられるようにします。
- どの不具合が最も重大か?
- どの不具合を最初に修正すべきか(それとも修正しなくていいのか)?
- この不具合を含むプロジェクトや製品が他にあるか?
この可視性によって、開発者はトリアージ時間を大幅に短縮できます。1つのプロジェクト内での影響のほか、全てのプロジェクトにわたる影響や、ビジネスへの影響に基づいて不具合修正の要否を決定するための実践的な情報がもたらされます。これにより、スケジュールの遅れや品質に関連した問題が起きるリスクを低減できます。
不具合の説明
Coverity Integrity Managerは、不具合の分かり易い説明、重大性、不具合がビジネスにおよぼす潜在的影響を指摘するので、開発者はどの不具合を最初に修正すべきか素早く割り出せます。
Common Weakness Enumeration(CWE)とのマッピング
不具合はすべて、Coverity Integrity Managerを通じてCWEへマッピングされます。CWE とはコミュニティが開発した不具合に関する辞書で、不具合情報の収集と重大性についての理解の推進、その不具合に対する既知の攻撃の特定、修正案のガイダンスの提供を行っています。情報豊富な知識ベースにクリックひとつでアクセスでき、見慣れない不具合を調査する際の憶測を排除し、根本原因を迅速に特定できるようになります。
不具合ナビゲーション
ソースコード内の不具合の場所をピンポイントで特定して、実際のソースコードを表示するので、不具合の前後関係がよくわかります。また、複数のプロジェクト、コード・ストリーム、バージョンにわたって不具合の発生回数がわかります。
関数呼び出しのインライン展開
プロシージャ間にかかわる不具合の場合は、関数呼び出しをインライン展開し、多重の入れ子構造になっている実行パスを把握して、不具合に関する包括的な説明が得られます。このような方法は、マニュアルでソースコードを調査するときには不可能です。
チェッカーの分類
クラッシュの原因となるエラーや、セキュリティ脆弱性、予期せぬ動作、パフォーマンス低下といったカテゴリーごとにチェッカーをまとめることで、不具合を容易に優先順位付けできます。この分類機能では、メモリー破損や、リソース・リーク、セキュリティのベスト・プラクティス違反、安全性を欠いたデータ処理など、問題の症状がどのように現れるかに基づいて、各チェッカーを適切なカテゴリーにマッピングします。次いで、数百万行ものオープンソースコードを解析してきた当社の豊富な経験に基づいて、これらの不具体の種類を高インパクト、中インパクト、低インパクトのいずれかに優先順位付けします。
ソースコードのナビゲーション
直感的なナビゲーションを提供しており、元のファイルやディレクトリ構造を使用して、ソースコードの残りの部分で問題が及ぶ範囲を評価したり、理解することができます。
柔軟な不具合フィルタリング
Coverity Integrity Managerは柔軟な不具合フィルタリング機能を備えており、ユーザーにとってもっとも重要な情報に素早くアクセスできます。
不具合のインパクト・マッピング(「プロジェクト・インパクト・マッピング」を代替案として検討すること)
開発の現場では時間短縮のため、ソースコードの再利用がよく行われています。ただし、コードベースが増大するに伴い、ソースコードの共有やブランチ作成に際し複雑性が増し、不具合の検出が困難になってきます。他のソリューションでは、不具合の一覧は提供されても、その影響に関する詳細は得られません。また、同じ不具合が複数の異なる不具合であるかのようにみえることがあり、複数のプロジェクトや製品に対するその不具合の影響を見抜くには、手作業が必要になります。
Coverity Integrity Managerはコードベース全体にわたって不具合の影響をマッピングし、ソースコードを共有している別のプロジェクトや製品に含まれる不具合を警告します。
複数のプロジェクトに発生する不具合の影響を素早く特定できるため、不具合の修正プロセスが明確で扱いやすいものになります。また、複数のプロジェクトに共通して含まれる不具合を1つの不具合として扱うので、効率よく迅速に不具合を修正できるようになると同時に、可視性が高まるため、より大きな影響を及ぼす優先度の高い不具合の修正に集中的に取り組めるようになります。
開発ワークフローへの統合
コベリティは使い勝手がよく、標準的な開発ワークフローにシームレスに統合できます。
デスクトップ解析
Coverity Static Analysisは、お客様の開発環境で簡単に使えます。開発者は自分のデスクトップ上のEclipseやVisual Studio IDEからすぐさま、不具合の解析、トリアージ、修正ができます。これにより、中央のビルド・システムでチェックする前に、開発者の記憶が新しいうちに自分が書いたソースコードをデバッグすることが可能になります。
Jenkinsとの統合
コベリティは、設定の必要なしにJenkins 継続 Integration Serverと統合できます。これにより、継続的プロセスを自動的に適用し、品質向上が図れます。
プロセス統合
コベリティはお客様の環境開発における重要なコンポーネントとシームレスに統合します。統合できる開発ツールの例は、SCM、バグ管理システム、IDE、Jenkinsのような継続したビルドシステムです。我々の拡張プラットフォームの使用により、お客様はFindBugsのようなサードパーティテストソリューション(Java向けの主要なオープンソース静的解析エンジン)と統合できます。JenkinsとFindBugsに追加して、コベリティはその他多くのソリューションと統合することができます。統合の例はこちらでご覧ください。
不具合レポート
ブランチ単位やプロジェクトごと、あるいは複数のプロジェクトにわたって不具合の履歴と解決状態を把握し追跡することは、より適切な意思決定と、長期にわたる開発者の生産性や品質の向上の測定に不可欠です。Coverity Integrity Managerのレポートは、次の3つの重要な質問に答えるための情報を提供します。
- どの不具合が修正されているか?そして重大な不具合はすべて修正されているか?
- 共有ソースコードに存在する不具合のすべてがトリアージされ、修正されているか(あるいは修正不要になったか)?
- 不具合の数と品質の推移を、長期にわたり、製品ごとやリリースごと、チェッカー/不具合タイプごと、ユーザーごとに見た場合、どのようなトレンドが認められるか?
マトリックスとトレンド分析
コベリティは、組織全体にわたる品質、セキュリティ、効率性のトレンドについて、たぐいまれな可視性を提供します。Coverity Integrity Managerを使えば前回の解析以降の不具合の数、中央のビルドで見つかった不具合の数、デスクトップ上で見つかった不具合の数などについて、詳細な情報が得られます。
マネージャーやエグゼクティブはCoverity Integrity Controlを使うことで、チームごとやソフトウェア・コンポーネントごとの長期にわたる品質およびセキュリティのトレンドを幅広く把握できます。そしてマネージャーは、組織内にどのようなリスクがあるかをより深く理解するために、素早く詳細ビューを掘り下げることが可能です。