EN JP CN

KAST と Path のどちらのタイプのチェッカーを作成するかKAST または Path?

KAST と Path のどちらのタイプのチェッカーを作成するかKAST または Path?

Klocwork は、Klocwork 抽象構文ツリー (KAST) に対して作成されたカスタムチェッカーと、中間表現 (Path) に対して作成されたカスタムチェッカーの 2 つのタイプのカスタムチェッカーをサポートしています。

KAST checker は、たとえばスタイルまたはコーディングのガイドラインの一部として、構文に関連する異常、または管理が必要な慣用句を検索する場合に便利です。KAST チェッカーは Klocwork コンパイラがソースモジュールから生成する抽象構文ツリーに対して機能し、そのツリーを階層的に検索することにより、報告する必要のあるコードコンストラクトを見つけます。KAST は XPath のようなドメイン固有の言語で、構文ツリー内の特定部分を指定する宣言ステートメントの構築をサポートする演算子や関数を提供します。Klocwork の Checker Studio は、KAST 式のプロトタイプ作成に使用でき、純粋な KAST チェッカーを迅速に作成するための手段を提供します。

KAST チェッカーが、Klocwork の標準組み込み関数で使用できない条件を必要とする場合は、単純な C API を使用してカスタム関数を作成できます。関数がコード化されたら、それを KAST 式内で呼び出し、その関数が含まれたライブラリの名前をチェッカー定義で指定するだけです。組み込み関数のリストについては、Checker Studio を起動し、[ヘルプ] > [ヘルプトピック] > [KAST リファレンス] > [C/C++ KAST 組み込み関数リファレンス] に移動します。

Path チェッカーは、プロシージャ間フローを含め、制御フローとデータフローの指摘を検索します。Path チェッカーは MIR というコードの中間表現に対して機能します。この構造は、フローチャートと似ています。 ソース内の各関数は MIR ノードで構成される制御フローグラフで表現され、各ノードは一階論理の演算、および内方向エッジと外方向エッジのセットをエンコードします。Path チェッカーは C++ で作成され、指定した欠陥を探して制御フローパスを MIR まで移動する必要があります。一般的な Path チェッカーは、指定したソースおよびシンク 'トリガ' ポイントを使用して、ソース (解析の開始点) からシンク (欠陥が検出される終了点) まで値を追跡します。

Path チェッカーの詳細については、Klocwork カスタマーサポートまでお問い合わせください。