knowledge base (ナレッジベース)

ナレッジベースは、ソフトウェアシステムで関数が相互作用する仕組みに関する情報を格納しているリポジトリです。この情報によって Klocwork は明らかなコード指摘をコンテキスト内で評価し、それらが真のコード指摘かどうかを判別できます。この知識があれば、このエンジンは、検出されない可能性のあるコード指摘を見つけたり、特定タイプの誤検知を排除したりできます。

たとえば、ナレッジベースのエントリは、渡されたパラメーターを関数がどのように使用する仕組みや、関数がメモリ割り当て/割り当て解除の一部かどうかの識別に役立ちます。

このエンジンは、デスクトップや統合ビルド解析で解析を実行するたびに、knowledge base (ナレッジベース) を自動的に生成して更新します。ネイティブシステムの関数の動作は、自動生成されたナレッジベースで指定されます。

また、独自のナレッジベースを作成し、Klocwork の指摘検出をチューニングして C/C++ および Java 結果における誤検知や未検知を減らすこともできます。Validate、Klocwork Desktop、または IDE のトレースバック機能を使用して、目的達成のためにナレッジベースファイルに含めるソースを特定できます。

ナレッジベースには 2 種類あり、一つは C/C++ 用で、もう一つは Java 用 (Java knowledge base または JKB と呼ばれる) です。C/C++ ナレッジベースファイルには拡張子 .kb、Java knowledge base には拡張子 .jkb が付きます。

JKB は JKB 形式で記述されます。これは Java に似たナレッジベース指定用の宣言型言語です。