コードアナライザは 3 種類のデータを分析します。
コンパイル時に検出される静的コードエラー
メモリーエラー検出ツールである discover ユーティリティーで検出される動的メモリーアクセスエラーおよび警告
コードカバレージツールである uncover ユーティリティーで測定されるコードカバレージデータ
個々の分析へのアクセスを提供するほかに、コードアナライザは静的コード検査と動的メモリーアクセス分析およびコードカバレージ分析を統合して、単独で機能するほかのエラー検出ツールでは検出できない多くの重要なエラーをアプリケーションで検出できます。
また、コードアナライザはコード内の中核となる問題、つまり、それらを修正すればほかの問題も解消される可能性の高い問題を特定します。通常、中核となる問題にはほかのいくつかの問題が関連しています。たとえば、それらの問題では割り当てポイントが共通であったり、問題が同じ関数の同じデータアドレスで発生したりするためです。
静的コード検査 は、コード内の一般的なプログラミングエラーをコンパイル時に検出します。C および C++ コンパイラの –xprevise=yes オプションは、コンパイラの制御およびデータフロー分析フレームワークを活用して、アプリケーションのプログラミングおよびセキュリティー上の潜在的な欠陥を分析します。
静的エラーデータの収集については、静的エラーデータの収集を参照してください。
コードアナライザで分析される静的コードエラーのリストについては、静的コードの問題を参照してください。
多くの場合、コード内のメモリー関連のエラーは見つけることが困難です。プログラムを実行する前に discover で計測機構を組み込むと、プログラムの実行中に discover はメモリーアクセスエラーを動的に検出して報告します。たとえば、プログラムが配列を割り当て、それを初期化せずに、配列内のある場所から読み取ろうとする場合、プログラムは動作が不安定になることがあります。プログラムに Discover で計測機構を組み込んでから実行すると、discover はこのエラーを検出します。
動的メモリーアクセスエラーデータの収集については、動的メモリーアクセスデータの収集を参照してください。
コードアナライザで分析される動的メモリーアクセスの問題のリストについては、動的メモリーアクセスエラーを参照してください。
コードカバレージ は、テストで実行されるコード領域、および実行されないコード領域に関する情報を提供するので、より多くのコードをテストできるようにテストスイートを改善できます。コードアナライザは、uncover によって収集されたデータを使用して、プログラム内のどの関数がカバーされていないか、また、該当する関数をカバーするテストを追加した場合にアプリケーションの合計カバレージが何パーセント増加するかを調べます。
コードカバレージデータの収集については、コードカバレージデータの収集を参照してください。