メインコンテンツ

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

既存の Code Prover レポート テンプレートのカスタマイズ

この例では、既存のレポート テンプレートを要件に合わせてカスタマイズする方法を説明します。レポート テンプレートでは、解析結果から生成されるレポートの内容と書式設定を定義します。既存のレポート テンプレートが要件に合わない場合は、テンプレートの特定の側面を変更できます。

既存のテンプレートの詳細については、Bug Finder と Code Prover のレポート (-report-template)を参照してください。

前提条件

レポート テンプレートをカスタマイズする前に以下を行います。

  • 既存のレポート テンプレートが要件を満たすかどうかを確認します。必要なレポートに近い形式のレポートを生成するテンプレートを特定します。このテンプレートを変更して使用できます。

    テンプレートをテストするには、テンプレートを使用してサンプルの検証結果からレポートを生成します。Polyspace の結果からのレポートの生成を参照してください。

  • MATLAB® Report Generator™ がシステムにインストールされていることを確認します。

この例では、Polyspace® Code Prover™ に用意されている Developer テンプレートを変更します。

テンプレートのコンポーネントの確認

レポート テンプレートは、MATLAB Report Generator のコンポーネントに分割できます。各コンポーネントは、テンプレートを使用して生成されるレポートに含まれる情報の一部を表します。たとえば、コンポーネント [タイトル ページ] はレポートのタイトル ページの情報を表します。

この例では、Developer テンプレートのコンポーネントを確認します。

  1. Polyspace インストール フォルダーのサブフォルダーを指定することによって、Polyspace 固有のレポート コンポーネントにパスを追加します。MATLAB コマンド プロンプトで、次のように入力します。

    addpath(fullfile(polyspaceroot, 'toolbox', 'polyspace', 'psrptgen', 'psrptgen'));
    addpath(fullfile(polyspaceroot, 'toolbox', 'polyspace', 'psrptgen', 'templates'));
    addpath(fullfile(polyspaceroot, 'toolbox', 'polyspace', 'psrptgen', 'psrptgen', 'udd'));

    ここで、polyspaceroot は Polyspace インストール フォルダーです。たとえば、C:\Program Files\Polyspace\R2025a です。MATLAB と Polyspace を統合した場合、MATLAB で関数 polyspaceroot を使用してインストール フォルダーの場所を検索できます。MATLAB や Simulink との Polyspace の統合を参照してください。

  2. レポート エクスプローラー インターフェイスを開きます。MATLAB コマンド プロンプトで、次のように入力します。

    report

  3. レポート エクスプローラー インターフェイスで、Developer テンプレートを開きます。

    Developer テンプレートは polyspaceroot/toolbox/polyspace/psrptgen/templates (polyspaceroot は Polyspace のインストール フォルダー) にあります。

テンプレートがレポート エクスプローラーで開きます。左側のペインに、テンプレートのコンポーネントが表示されます。各コンポーネントをクリックすると、右側のペインにコンポーネントのプロパティが表示されます。

Report Explorer window showing components in the left pane and the component properties displayed in the right pane.

Developer テンプレートの一部のコンポーネントとその目的を次に示します。

コンポーネント目的
Title Page (MATLAB Report Generator)

レポートの先頭にタイトル ページを挿入する

Chapter/Subsection (MATLAB Report Generator)

レポートの各部をタイトル付きの節にグループ化する

Code Verification Summary

Polyspace の解析結果の概要テーブルを挿入する

Logical If (MATLAB Report Generator)

条件を満たす場合にのみ子コンポーネントを実行する

Run-time Checks Summary Ordered by File

Polyspace Code Prover のチェックをファイル別にグループ化したテーブルを挿入する

テンプレートの動作を理解するには、テンプレートのコンポーネントをテンプレートを使用して生成されたレポートと比較します。

すべてのコンポーネントの詳細については、コンポーネントの取り扱い (MATLAB Report Generator)を参照してください。Polyspace 固有のコンポーネントの詳細については、レポートの生成を参照してください。

メモ

コンポーネントの一部のプロパティは、内部の式を使用して設定されています。それらの式を確認することはできますが、変更はできません。たとえば、Developer テンプレートの [論理 If] コンポーネントで指定される条件は、内部の式を使用して指定されています。

テンプレートのコンポーネントの変更

レポート エクスプローラー インターフェイスでは、以下を行うことができます。

  • テンプレートの既存のコンポーネントのプロパティを変更する。

  • テンプレートに新しいコンポーネントを追加したり、既存のコンポーネントを削除する。

この例では、[Developer] テンプレートに、テンプレートを使用して生成されたレポートから到達不能コードチェックをフィルター処理するコンポーネントを追加します。

  1. レポート エクスプローラー インターフェイスで Developer テンプレートを開き、別の名前を付けて別の場所に保存します。この例では Developer_without_UNR という名前にします。

  2. Developer_without_UNR テンプレートから [到達不能コード] チェックをフィルター処理する新しいグローバル コンポーネントを追加します。このコンポーネントは、レポートの特定の章ではなくレポート全体に適用されるためグローバルになります。

    このアクションを実行するには、以下を行います。

    1. 中央のペインの [Polyspace] の下にあるコンポーネントReport Customization (Filtering)をドラッグして、[タイトル ページ] コンポーネントの上に配置します。この位置にコンポーネントを配置することで、レポートの特定の章ではなくレポート全体にフィルターが適用されるようになります。

      The example shows the Report Customization (Filtering) component placed above the Title Page component in the Report Explorer interface.

    2. [Report Customization (Filtering)] コンポーネントを選択します。右側のペインで、このコンポーネントのプロパティを設定できます。既定では、すべての結果をレポートに含めるようにプロパティが設定されています。

      [到達不能コード] チェックを除外するには、[Advanced filters] グループにある [Check types to include] フィールドに ^(?!Unreachable code).* と入力します。

      Advanced Filters group with the Unreachable code check type added to the Check types to include field.

      このフィールドに MATLAB 正規表現を入力できます。Report Generator により、Polyspace の結果名に対して正規表現が適用されます。次に例を示します。

      • キャレット ^ は、後に続くパターンが文字列の先頭でなければならないことを示します。

      • 文字 (?!pattern) は、後に続くパターンが文字列に現れてはならないことを示します。

      これらを組み合わせ、正規表現 ^(?!Unreachable code).* は、Unreachable code で始まる Polyspace の結果名がレポートから除外されなければならないことを示します。正規表現およびPolyspace Code Prover のすべての結果のリストを参照してください。

      このコンポーネントをアクティブにするか非アクティブにするかを切り替えることができます。コンポーネントを右クリックして、[コンポーネントのアクティブ/非アクティブ] を選択します。

  3. 前の手順で適用したグローバル フィルターをオーバーライドしないように既存の章固有のコンポーネントを変更します。オーバーライドしないようにすると、その章固有のコンポーネントはグローバル コンポーネントのフィルターの仕様に準拠するようになります。

    このアクションを実行するには、以下を行います。

    1. 左側のペインで、Run-time Checks Details Ordered by Color/Fileコンポーネントを選択します。これは、Polyspace Code Prover で見つかった実行時チェックの詳細を含むテーブルをレポート内に生成するコンポーネントです。

      右側のペインに、このコンポーネントのプロパティが表示されます。

    2. [Override Global Report filter] ボックスをクリアします。

    Run-time Checks Details Ordered by Color/File is selected in the left pane. The right-pane shows the properties of the component. The Override Global Report filter box has been cleared.

    変更を行った後で、Developer_without_UNR テンプレートを保存します。

  4. Polyspace のユーザー インターフェイスで、DeveloperDeveloper_without_UNR の両方のテンプレートを使用して、[到達不能コード] チェックを含む結果からレポートを作成します。2 つのレポートを比較します。

    次に例を示します。

    1. [ヘルプ][例][Code_Prover_Example.psprj] を開きます。

      このデモの結果には [到達不能コード] チェックが含まれています。

    2. Developer テンプレートを使用して pdf レポートを作成します。

      レポートで、次を開きます。"第 5 章のPolyspace 実行時チェックの結果" (ご使用の製品バージョンによっては、章番号が異なることがあります)。グレーの [到達不能コード] チェックが表示されます。レポートを閉じます。

    3. Developer_without_UNR テンプレートを使用して pdf レポートを作成します。[レポートの実行] ウィンドウで、[参照] ボタンを使用して、Developer_without_UNR テンプレートを既存のテンプレートのリストに追加します。

      レポートで、次を開きます。"第 6 章の Polyspace 実行時チェックの結果" (ご使用の製品バージョンによっては、章番号が異なることがあります)。グレーの [到達不能コード] チェックは表示されません。

      メモ

      テンプレートをテンプレートの既存のリストに追加した後、レポート生成前に、新しく追加したテンプレートを必ず選択してください。

その他の調査

Developer テンプレートを変更して、テンプレートを使用して生成されたレポートからファイル initialisations.c が除外されるようにします。変更したテンプレートを使用して、Code_Prover_Example の結果からレポートを生成し、ファイル initialisations.c がレポートから除外されていることを確認します。

ヒント: 使用しなければならない正規表現は ^(?!.*initialisations.c).*

他の例は、サンプル レポート テンプレートのカスタマイズを参照してください。

参考

| |

トピック