EN JP CN

ワークフローについて

ワークフローについて

カスタム関数の作成は、kwcreatecheckerユーティリティにより提供されるワークフローとツールに慣れてしまえば単純なプロセスです。始める前に、次を決定する必要があります。

  • チェッカー (指摘コードとも呼ばれる) を何と呼ぶか
  • 1 つまたは複数のカスタム関数がリンクされるライブラリを何と呼ぶか

この記事の目的のため、チェッカーのコードとして 'TUTORIAL' を、また作成したカスタム関数が含まれるライブラリの名前として 'tutorial' を使用します。ライブラリ名には拡張子は必要ありません。 使用中のプラットフォームに特定の拡張子 (Windows は DLL、Linux は SO、Mac は DYLIB など) が自動的に作成されるためです。

チェッカースタブファイルの作成

チェッカーにスタブファイルを作成するには、kwcreatechecker ユーティリティを使用します。

$ kwcreatechecker --code TUTORIAL --type kast --language cxx --kast-library tutorial

このコマンドは、TUTORIAL と呼ばれる作業ディレクトリと、そのディレクトリ内に一連のスタブファイルを作成し、OS に特定のカスタム関数ファイル用のサブディレクトリを作成します。TUTORIALディレクトリには以下が含まれています。

  • Makefile、全体のビルドスクリプト
  • Makefile.plugin、カスタム関数に特定のビルドスクリプト
  • PluginSource.cpp、カスタム関数のテンプレートソース
  • checkers.xml、チェッカーのテンプレート定義
  • help.xml、チェッカーヘルプのテンプレート定義
  • ix86-apple-macosx/、カスタム関数がリンクされる作業フォルダー
  • testcase.cc、テストケースのテンプレートソース

例は Mac で作成されていますが、その他のプラットフォームの場合との違いは、カスタム関数ライブラリをリンクするために使用されるサブフォルダー名のみです。これらのファイルで、カスタム関数、または一連の関数の作成とテストに必要なすべてが揃いました。

基本的なワークフローの使用

kwcreatechecker でチェッカーのスタブファイルを作成した後、最初のワークフローは以下の通りです。

  1. kwcheck createを使用して、作業ディレクトリ (この例では TUTORIAL) にローカルプロジェクトを作成します。
  2. checkers.xmlを編集して (プロトタイプ作成には Checker Studio を使用する可能性あり)、カスタム関数を実行する KAST 式を定義します。
  3. チェッカーに検索させる欠陥パターンを示すポジティブおよびネガティブの例を使って、testcase.ccを変更します。
  4. 'make buildspec' でビルドスクリプトを実行してテストケースの build specification (ビルドスペック) を作成し、kwcheck import kwinject.outでそれをローカルプロジェクトにインポートします。
  5. PluginSource.cppを編集して、1 つまたは複数のカスタム関数を作成または更新します。
  6. 'make install' でチェッカーを生成し、インストール可能なチェッカーデプロイメントパッケージをビルドします。
  7. チェッカーデプロイメントパッケージを ~/.klocwork/plugins ディレクトリに解凍して、チェッカーをローカルデスクトップにインストールします。たとえば、次のようになります。

    unzip -o TUTORIAL.zip -d ~/.klocwork/plugins

  8. kwcheck run でチェッカーが正しく機能することを確認します。
  9. 成功しなかった場合は、成功するまでステップ 5 からプロセスを繰り返します。

ワークフローのカスタマイズ

テンプレートワークフローに従うか、生成されたビルドスクリプトを変更して自分独自の目的にそれを一部自動化することができます。たとえば、フィールドの目的のために Makefile を特殊化するには、チェッカーのインストールを完了するように (インストールのために準備するだけでなく) それを変更し、テストケースに対するチェッカーのテストを自動化することができます。

たとえば:

  • makefile に新しいデフォルトターゲットを追加できます。
 all: install run


  • インストールターゲットに解凍コマンドを含めることができます (例、unzip -o TUTORIAL.zip -d ~/.klocwork/plugins)。
  • テストのためこれに似たターゲットを追加できます。
 run: buildspec
        rm -rf .kwlp
        rm -rf .kwps
        "$(KW_INSTALL_DIR)/bin/kwcheck"-? create -b kwinject.out
        "$(KW_INSTALL_DIR)/bin/kwcheck"-? run


この例は Unix プラットフォームに基づいています。 その他のプラットフォームでの Makefile の変更はこれとは異なりますが、目的は同じです。この変更を行ったら、ワークフローを次のように簡素化します。

  1. checkers.xml を編集して、カスタム関数を実行する KAST 式を定義します。
  2. チェッカーが適切に実行されるように testcase.ccを編集します。
  3. PluginSource.cpp を編集して、カスタム関数を作成または更新します。
  4. 'make' (上記の説明に従って Makefile を変更した場合、これによって 'install' および 'run' ターゲットが実行されます) でカスタム関数をテストします。
  5. チェッカーに満足するまで、ステップ 3 からプロセスを繰り返すか、ステップ 1 または 2 も繰り返します。

ワークフローのカスタマイズにさらに役立つ可能性のある以下のようなステップもあります。

  • デフォルトのローカルプロジェクトフォルダー名を変更して、見つけやすくします。
  • プロジェクトが接続するライセンスホスト名を変更します。
  • テストケースコードを、それぞれ独自のビルドスクリプトに分割します。