EN JP CN

Kwcreatechecker

Kwcreatechecker

Kwcreatechecker

Kwcreatechecker

kwcreatechecker でカスタムチェッカーを作成します。kwcreatechecker は、コマンドラインツールデスクトップ解析プラグインとともにインストールされます。方法については、カスタム C/C++ チェッカーの作成またはカスタム Java チェッカーの作成 またはカスタム C# チェッカーの作成を参照してください。

使用方法

kwcreatechecker --language <language> --type <checker_type> --code <checker_name>

説明

kwcreatechecker でチェッカーのスタブファイルが生成されます。スタブファイルのタイプは、言語と指定されたチェッカーのタイプで決まります。KAST チェッカーと Path チェッカー (C/C++ とJava) の場合、生成されるスタブファイルは次のとおりです。

  • チェッカー設定ファイル (checkers.xml とhelp.xml)
  • ビルドファイル (build.xml (Java の場合)、Makefile (C/C++ の場合)、Nmakefile (C# の場合))

さらに、

  • C/C++ とC# とJava の KAST チェッカーの test-case ファイルが生成されます。
  • より詳細なデバッグ情報を提供するため、Java Path チェッカーのロガーファイルが生成されます。
  • C/C++ の PATH チェッカーのチェッカートリガーファイルが生成されます。
注: Windows 上で kwcreatechecker を実行するには、Visual Studio がインストールされている必要があります。Windows 上では、MS 製以外の Makefile はサポートされません。

オプション

名前説明
--code <checker_name>チェッカー名を指定します。許容される文字は、次のとおりです。
  • a ~ z
  • A ~ Z
  • 0 ~ 9
ピリオドはコードの先頭には使用できませんが、それ以外の場所なら使用することができます。たとえば、MY.C.CHECKER です。
注: エラー ID (チェッカー名) では、マルチバイト文字はサポートされていません。また、255 文字までという制限があります。
--forceチェッカーフォルダーが既に存在する場合でも、そのチェッカーを強制的に生成します。
--helpヘルプ情報を表示します。
--kast-library <KAST-plugin-library-name>KAST 式のカスタム関数の実装があるライブラリの名前を指定します。
注: --type の値が kast のときだけ当てはまります。
カスタム関数を含めるため、標準チェッカーファイル (checkers.xml、test-case ファイル、help.xml、およびビルドファイル) に加えて、独立したファイルも作成されます。C/C++ の場合、このオプションにより、PluginSource.cpp ファイル、プラットフォームディレクトリ、および Make.Plugin ファイルが作成されます。Java の場合、MyFunc.java、plugin_functions.xml、およびロガーファイルが作成されます。
--language <language>チェッカー (cxx または cs または java) の言語を指定します。
--type <checker type>

チェッカーの種類を指定し、C/C++ の場合は kast または path、C# の場合は kast、Java の場合は、sv または rlk または common または kast を作成します。

詳細は、カスタム C/C++ チェッカーの作成カスタム C# チェッカーの作成 および カスタム Java チェッカーの作成を参照してください。

--versionkwcreatechecker バージョンを表示します。

カスタムチェッカーの help.xml ファイルの例

help.xml は、kwcreatechecker を実行したときに作成されるファイルの 1 つです。

このファイルは、カスタムチェッカーのヘルプの作成に使用します。チェッカーを展開すると、この情報は Klocwork ドキュメンテーションおよび Klocwork Static Code Analysis のコンテキスト依存ヘルプに表示されます。

少なくとも指摘の説明を入力する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0"?>
<help language="java">
    
    <defect id="SV.CLONE.NOFIN">        
        <description>            
            This error appears when clone method is not defined final.            
        </description>
        <risks>            
            This might be a security concern only for library vendors or for mobile code (applets). Clone method is another mechanism that allows to create objects, and it might be unwanted that users can inherit this class and tamper with behavior of this method. 
        </risks>
        <prevention>            
            It is better to use copy constructors than clone methods, if using of clone cannot be avoided make clone methods final.    
        </prevention>        
        <examples>            
            <example line="17">                
                
                
    protected Object clone()
    
            throws CloneNotSupportedException (
            
        throw new CloneNotSupportedException();
        
    }
    
                <description>                    
                    SV.CLONE.NOFIN is reported for method declaration on line 17: Method 'clone' defined in class 'com.klocwork.jdefects.checkers.ast.samples.SV_CLONE_NOFIN_Sample_1' is non-final, which may allow an attacker to override its behaviour                     
                </description>                
            </example>            
        </examples>        
    </defect>    
</help>