メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Polyspace Bug Finder 解析用のチェッカー構成の準備

Polyspace® をツールとして組織のソフトウェア開発プロセスに組み込む前に、Polyspace を使用したコードの改善をどのように計画するかを決定します。解析するソース コンポーネントやチェックする問題などを選択します。これにより、選択したものが反映された解析構成ファイルを準備することができます。

大まかに言えば、Bug Finder 解析構成は次の 2 つの部分で構成されます。

  • ソースとターゲットを含むビルド構成

  • チェッカー構成

このトピックでは、標準的な展開シナリオでチェッカー構成を作成するためのワークフローについて説明します。このワークフローは、プロジェクトや組織の特定の要件に合わせて調整することができます。

有効にするチェッカーの特定

組織全体で特定のコーディング規約を設定するとします。以下のアプローチのいずれかに従うことができます。

  • 外部のコーディング規約に準拠する。

    Bug Finder がコーディング規約をサポートしている場合は、その規約と、その規約内の事前定義ルールまたはカスタム ルールのセットを選択できます。

    Polyspace Bug Finder™ は、以下の外部規約を直接サポートします。これらの規約では、構成内で規約を有効にして、解析を開始するだけです。

    • MISRA C™:2023

    • MISRA™ C++:2023

    • AUTOSAR C++14

    • CERT® C

    • CERT C++

    • ISO®/IEC TS 17961

    • ガイドライン "(Bug Finder のみ)"

    サポートされている外部コーディング規約のリストについては、コーディング規約を参照してください。コーディング ルール違反をチェックするワークフローの詳細については、コーディング規約違反のチェックおよびレビューを参照してください。

  • 外部規約と以前に検出された問題に基づいて、社内のコーディング ルールのセットを作成します。

    Bug Finder 欠陥チェッカーおよび/または外部コーディング規約チェッカーを使用して、これらのルールのチェックを自動化できるかどうかを確認します。

    チェッカー候補を特定する 1 つの方法は、ドキュメンテーションでのキーワード検索です。可変個引数関数の使用から発生する可能性がある問題を検出するとします。

    1. variadicva_arg などのキーワードを検索し、検索結果を製品で Bug Finder に絞り込んでから、カテゴリで [解析結果のレビュー][Polyspace Bug Finder 結果] に絞り込みます。

    2. 可変個引数関数に関連するすべてのチェッカーを特定します。有効にするチェッカーを書き出します。チェッカーの重複がないかどうかを確認し、重複があれば排除します。

    処理要件に対して有効または無効にした各欠陥チェッカーを記録できます。polyspaceroot\polyspace\resources\ にあるチェッカーのスプレッドシートから始めることができます。[メモ] 列に、チェッカーを有効または無効にした論理的根拠を記入します。

    ドキュメンテーションの他に、コード仕様を作成して、この仕様に対して Bug Finder を実行することでチェッカー候補を特定できます。このようなチェッカーをユーザー定義のコーディング規約に追加できます。Find Polyspace Bug Finder Checkers That Map to Coding Rules in User-Defined Coding Standardを参照してください。

  • 実行時にエラーを引き起こす可能性が最も高い欠陥 (バグ) だけをチェックします。

    組織の標準的なコーディング慣習に従っていない場合や、外部コーディング規約では基本設定に対して網羅的すぎる場合があります。

    Bug Finder 欠陥チェッカーから始めて、正当化できない欠陥がゼロになるようにするチェッカーのサブセットを特定します。このサブセットの特定方法の例を以下に示します。

    • まず、影響力の大きい欠陥チェッカーを選択します。このようなチェッカーは、深刻な結果を招く可能性がある問題を検出できます。

      影響度による欠陥の分類も参照してください。

    • 影響力の大きいチェッカーを使用して 1 回目の Bug Finder 解析を実行し、即時に対応する必要のないノイズが大量に生成されるチェッカーを特定します。最初の展開でこれらのチェッカーを無効にすることができます。

    特定の Bug Finder の欠陥チェッカーの選択も参照してください。

    外部コーディング規約用のチェッカーを使用して、同様の手順を行います。たとえば、MISRA C:2012 では、必須のまたは必要なガイドラインから始めて、後から拡張できます。

このプロセスの終了時には、Polyspace 解析で有効にするチェッカーが特定されています。これらのチェッカーは、すべて欠陥 (バグ) チェッカーでも、すべて外部コーディング規約からのチェッカーでも、その両方の組み合わせでも構いません。次のセクションでは、開発者に展開可能なチェッカー構成ファイルの作成方法を説明します。

チェッカー構成ファイルの作成

Polyspace Bug Finder 解析構成は、コマンド ライン フラグを使用して指定された解析オプションのリストです。構成全体を allOptions.txt という名前のテキスト ファイルなどの 1 つのオプション ファイルに格納し、そのファイルを次のように -options-file を使用して指定できます。

polyspace-bug-finder -options-file allOptions.txt

または、次のように指定できます。

polyspace-bug-finder-server -options-file allOptions.txt

便宜上、構成は次の部分に分割できます。

  • ビルド構成 (ソースやターゲットなど) — ビルドに関連するすべてのオプションをオプション ファイル buildOptions.txt に保存します。このファイルは手動で作成することも、ビルド コマンド (makefile) から自動的に作成することもできます。このファイルの作成方法の詳細については、ターゲット環境とコンパイラの動作の指定を参照してください。

  • 欠陥チェッカーと外部コーディング規約構成 — チェッカー構成ファイルにチェッカー構成を指定します。

ビルド構成とチェッカー構成を別々のオプション ファイルに分割することによって、プロジェクトごとに個別のビルド構成を作成しながら、プロジェクト全体で欠陥チェッカー構成を再利用することができます。逆に、個別のチェッカー構成を使用しながら、ビルド構成を再利用することもできます。

前のセクションでは、解析で有効にするチェッカーを特定しました。特定したチェッカーを単一の構成ファイルにまとめる方法は複数あります。

  • カスタム コーディング規約 (.pschk) を作成する — たとえば、特定したルールを 1 つの社内コーディング規約にまとめるとします。このカスタム コーディング規約を作成するには、この規約を構成するコーディング ルールを SARIF ファイルに指定してから、コマンド polyspace-catalog-bundler を使用します。このコマンドは、Polyspace Platform ユーザー インターフェイスまたはコマンド ラインで使用できる pschk ファイルを生成します。カスタム コーディング規約 CustomCodingStandard.pschk を指定するには、コマンド ラインで以下を入力します。

    polyspace-bug-finder -options-file buildOptions.txt -checkers-activation-file CustomCodingStandard.pschk
    このワークフローの詳細については、Create User-Defined Coding Standard by Using Polyspace Bug Finder Checkersを参照してください。以前の Polyspace ユーザー インターフェイスと Polyspace Access では、カスタム コーディング規約はサポートされていません。

  • チェッカー アクティベーション ファイル (.xml) を作成する — 単一のチェッカー アクティベーション ファイルを使用して複数の外部コーディング ルールと Bug Finder の欠陥を有効にするとします。[チェッカーの選択] ウィンドウを使用してこの XML を作成できます。このウィンドウを開くには、コマンド ラインで以下を入力します。

    polyspace-checkers-selection
    [チェッカーの選択] ウィンドウで、前のセクションで特定した欠陥とコーディング ルールを選択し、選択した内容を XML ファイルとして保存します。

    テキスト エディターを使用して XML ファイルを作成する場合は、フォルダー polyspaceroot\polyspace\examples\doc_cxx\checkers_activation_XML\ にあるサンプル アクティベーション ファイルを使って開始します。

    アクティベーション ファイルを作成したら、それを [チェッカー アクティベーション ファイル] (-checkers-activation-file) の入力として指定します。たとえば、チェッカー アクティベーション ファイル checkers.xml を使用するには、コマンド ラインで以下を入力します。

    polyspace-bug-finder -options-file buildOptions.txt -checkers-activation-file checkers.xml
    XML ファイルの作成の詳細については、[チェッカー アクティベーション ファイル] (-checkers-activation-file) の例を参照してください。

  • オプション ファイルを作成する — 選択した Bug Finder の欠陥と外部コーディング規約を分けて保存するとします。この場合、チェッカー構成ファイルは次の 2 つの部分で構成されるオプション ファイル Defects_Coding_Rules になります。

    • Bug Finder チェッカーの選択 — オプション -checkers の後に欠陥チェッカーのコンマ区切りリストを指定して、前のセクションで選択した Bug Finder の欠陥を有効にします。次に例を示します。

      -checkers 
        INT_ZERO_DIV, 
        FLOAT_ZERO_DIV, 
      ...

    • 外部コーディング規約 — コマンド [ファイルごとにチェッカーを設定] (-checkers-selection-file) を使用して、前のステップで選択したコーディング規約を有効にします。たとえば、MISRA C:2012 および AUTOSAR C++14 規約の特定のルールを有効にするテキスト ファイルには、次のオプションが含まれています。

      -misra3 from-file
      -autosar-cpp14 from-file 
      -checkers-selection-file externalRuleCheckers.xml
      
      展開すると、特定の規約のルールに対してチェッカーを有効または無効にする XML ファイル externalRuleCheckers.xml の構造が表示されます。

       チェッカー選択ファイル

      XML ファイルの作成方法の詳細については、コーディング規約違反のチェックおよびレビューを参照してください。

    欠陥とコーディング規約を選択したら、オプション ファイル Defects_Coding_Rules は次のようになります。

    -checkers 
      INT_ZERO_DIV, 
      FLOAT_ZERO_DIV, 
    -misra3 from-file
    -autosar-cpp14 from-file 
    -checkers-selection-file externalRuleCheckers.xml
    
    このオプション ファイルを使用して Bug Finder 解析を実行するには、次のコマンドを使用します。
    polyspace-bug-finder -options-file buildOptions.txt -options-file Defects_Coding_Rules

ビルド オプション ファイルとチェッカー構成ファイルを作成したら、スクリプトで Polyspace 実行コマンドを使用します。次に例を示します。

  • Jenkins® ビルドでは、実行中の他のツールと一緒に、ビルド スクリプトで実行コマンドを指定できます。コード送信後に、Polyspace 解析をビルド スクリプトを介して新しく送信されたコードで実行できます。

  • Polyspace as You Code IDE 拡張機能では、チェッカー アクティベーション ファイル (.XML) またはカスタム コーディング規約 (.pschk) を IDE で直接使用できます。

  • 開発者 IDE では、外部ツールを実行するメニュー項目を介して実行コマンドを指定できます。開発者は、外部ツールを使用することによって、コーディング中に Polyspace 解析を実行できます。

このようなオプション ファイルを手動で作成した場合、間違いを起こしやすくなります。デスクトップ製品 Polyspace Bug Finder のライセンスを持っている場合は、Polyspace ユーザー インターフェイスからこれらのファイルを作成できます。ユーザー インターフェイスでの Polyspace 解析オプションの設定とスクリプトの生成も参照してください。

参考

トピック