概要

このドキュメントは、コンパイラーをスタティック・セキュリティー解析モードで実行した際に検出される各種問題について説明します。

スタティック・セキュリティー解析とは、ソースコードの詳細な解析を通じてソフトウェアのエラーとセキュリティーの脆弱性を発見するプロセスです。

スタティック・セキュリティー解析には、インテル® Parallel Studio XE 製品またはインテル® C++ Studio XE 製品が必要です。解析自体はコンパイラーで行われ、解析結果はインテル® Inspector XE GUI でのみ表示できます。解析を任意のマシンで行い、別のマシンで結果を表示できます。この場合、解析マシンではコンパイラーのみインストールされていれば問題ありません。表示するマシンには、コンパイラーとインテル® Inspector XE がインストールされている必要があり、また有効なインテル® Parallel Studio XE またはインテル® C++ Studio XE ライセンスが必要です。

スタティック・セキュリティー解析は、アプリケーションのセキュリティーや正当性を損なう可能性のある幅広い範囲のエラーを見つけます。このドキュメントでは、各種問題について、例や修正方法などを含めて詳しく説明します。特定の種類の問題がすべて検出されるわけではないため、問題が検出されなくても、プログラムにその問題が存在しないことが保証されるわけではありません。

スタティック・セキュリティー解析では、よく同じ種類の異なる形式の問題が検出されることがあります。例えば、整数変数をゼロに設定して、除算で除数として使用すると、 "ゼロ除算" エラーとしてレポートされます。同じ除算の前に整数変数をゼロまたは非ゼロに設定する "if" 文がある場合は、 どちらのパスを実行するかによって、ゼロで除算されたりされなかったりする可能性があるため、"ゼロで除算した可能性がある" というエラーとしてレポートされます。このドキュメントでは、この 2 つのエラーを 1 つのセクションで説明しています。

このドキュメントの説明は、GUI で診断結果を表示しながら参照することを前提にしています。

GUI では、診断に関連のあるソース部分が "問題箇所" として示されます。それぞれの問題箇所では、問題の種類と関連性が説明されています。例えば、解放後の使用エラーには、ストレージの割り当て解除が行われた場所とその後に使用された場所の 2 つの問題箇所があります。このセクションでは、これらの問題箇所を次のような表に示します。

ID

問題箇所

説明

1

解放サイト

ストレージの割り当てが解除された場所

2

メモリーアクセス

ストレージが参照された場所

スタティック・セキュリティー解析では、関連する問題は 1 つの問題セットにまとめられます。例えば、ポインターをゼロに設定する代入文の後に "if" 文があり、 "if" 文の 2 つの分岐がそのポインターの値を使用し、ともに NULL ポインターを逆参照する場合、 スタティック・セキュリティー解析は、これらの NULL ポインター診断を 1 つの "メモリー書き込み" と 2 つの "Null の逆参照" として 1 つの問題セットにまとめます。一般的に問題セットの問題箇所は、すべての問題箇所から重複するものを除いたものです。

© 2010 Intel Corporation. 無断での引用、転載を禁じます。