knowledge base (ナレッジベース) ファイルの作成

knowledge base (ナレッジベース) ファイルを作成する前に、クラスごとに 1 つの .jkb を作成するか (このガイドのチュートリアルと例ではこのアプローチを使用しています)、検証やセキュリティなどに 1 つの .jkb を作成するかを決定する必要があります。

さらに、マルチセクションの knowledge base (ナレッジベース) ファイルにプロジェクト全体のためのマルチセクションの .jkb を作成できます。詳細については、以下の「マルチセクション knowledge base (ナレッジベース) の使用」を参照してください。

knowledge base (ナレッジベース) ファイルを手動作成 (または編集) するには:

  1. 拡張子 .jkb の新規テキストファイルを作成します。
  2. 好みのエディターで、チェッカーに対して特定する必要のあるメソッドシグネチャを追加し、Knowledge base (ナレッジベース) 注釈の手順で注釈を付加して、それぞれの処理方法をチェッカーに指示します。各注釈をファイルの 1 行に指定します。

マルチセクション knowledge base (ナレッジベース) の使用

Java ソースファイルには 1 つのパッケージ宣言のみを指定することができ、import ブロックの完了後は import をオーバーライドできません。これはモジュール性の高い Java ソースコードに最適ですが、プロジェクトまたはライブラリ全体に対して knowledge base (ナレッジベース) を指定する場合の knowledge base (ナレッジベース) には不適切になります。

.jkb ファイルには複数のパッケージ宣言を使用できます。これらのパッケージ宣言は、.jkb ファイルを個別のパッケージ宣言およびインポート宣言としてマルチセクションに分割します。

package java.util;


import java.util.*;

interface Entry<K,V> {  
   @Source("return") K getKey();
}

package java.io; // Here starts another section

import java.net.URI;
import java.net.URL;

public class File {  
   @Source("return") int getPrefixLength();
}

import javax.swing.*; // Here starts another section

class About 
   @Source("return") JFrame getFrame();
}

パッケージに存在しないクラスを記述するには、以下のように "package;" を使用します。

@BindAll("ERROR")


class AKB {    
   void a(@Sink String s);
}

package java.lang;

public class String {  
   @Source("return") java.lang.String trim();
}

package;

class BKB {    
   void b(@Sink String s);
}