メインコンテンツ

Simulink ブロックに注釈を付けて Polyspace の結果に対処

Polyspace® の結果を確認するとき、正当化を追加することによって、既知の Polyspace の結果に対処することができます。Simulink® エディターまたは Polyspace ユーザー インターフェイスを使用して、関連する Simulink ブロックに正当化の注釈を付けることができます。Polyspace は、以下の結果の注釈付けをサポートしています。

ブロックに注釈を付けると、そのブロックから生成されたコード操作に、注釈のコメントが追加された解析結果が表示されます。サブシステム ブロックに注釈を付けたり、関数呼び出しにつながるブロックに注釈を付けたりした場合、そのブロックから生成されたコード操作では、解析結果にコメントが表示されません。そのブロックがルックアップ テーブルである場合は、注釈を使用する代わりに Stub lookup tables を有効にします。ルックアップ テーブルのスタブ化を参照してください。

Embedded Coder® を使用して生成されたコードには MISRA C™:2012 からの既知の逸脱があります。Deviations Rationale for MISRA C Compliance (Embedded Coder)を参照してください。ブロックに注釈を付けることによって、これらの既知の問題を正当化します。

Simulink ブロックの注釈、または生成されたコードの注釈は、解析の履歴を反映しません。モデルを更新すると、Polyspace の結果は変更される場合がありますが、注釈は変更されません。モデルを更新すると、既存の注釈の内容が古くなる場合があります。モデルや生成されたコードを更新するときには、注釈を更新してください。

Polyspace ユーザー インターフェイスを使用したブロックへの注釈付け

コードの生成に Embedded Coder を使用する場合は、Polyspace デスクトップ ユーザー インターフェイスを使用して Simulink ブロックに直接注釈を付けることができます。注釈を付ける必要がある問題を特定してから、[結果の詳細] ペインで [重大度][ステータス]、およびオプションのメモを追加することによって、レビュー情報を入力します。次に例を示します。

  • その問題の [ステータス]To Investigate に設定します

  • その問題の [コメント]Might Impact "Module" に設定します

ソース コードで、問題を示している変数 (または同じ式にある別の変数) を右クリックし、コンテキスト メニューから [ブロックへの注釈] を選択します。

Right-click on a source code token that displays the result of a check and select the 'Annotate Block' option.

レビュー情報はブロック注釈として Simulink エディターに渡され、注釈付きブロックが強調表示されます。

An annotated block has the words 'Polyspace annotation' next to it.

1 つの Simulink ブロックに複数の注釈を付けることができます。ブロックに付ける 2 個目以降の注釈は、以前の注釈に追加されます。これらの注釈は、Simulink エディターでは表示できません。生成されたコードを Polyspace を使用して解析するとき、これらの注釈は、Polyspace UI の [結果の詳細] ペインにレビュー情報として表示されます。

オプション [ブロックへの注釈] は、Simulink ブロックまでトレースできるコード要素に対して使用できます。詳細については、Trace Simulink Model Elements in Generated Code (Embedded Coder)を参照してください。

Simulink エディターでのブロックへの注釈付け

Simulink エディターでブロックに注釈を付けるには、ブロックを選択し、[Polyspace] タブで [注釈の追加] を選択します。[Polyspace の注釈] ウィンドウで以下のようにします。

  • ドロップダウン リスト [注釈タイプ] から、注釈を付ける Polyspace の結果のタイプを選択します。

  • 同じタイプの複数の結果に注釈を付ける場合は、結果の頭字語をコンマ区切りリストでテキスト ボックスに入力します。詳細は、以下を参照してください。

  • 1 つの結果のみに注釈を付ける場合は、[1 つのチェックのみ] を選択します。テキスト ボックスがドロップダウン リストに変換されます。注釈を付ける結果をこのドロップダウン リストから選択します。

  • 対応するテキスト ボックスで、結果に割り当てるステータス、重大度、およびコメントを入力します。

ブロックに "Polyspace annotation" というテキストが表示されます。ブロックに既存の Simulink 注釈がある場合、それらは保持されます。

[Polyspace の注釈] ウィンドウでは、1 回の操作で 1 つのタイプの Polyspace の結果に注釈を付けることができます。複数のタイプの結果に注釈を付けるには、[Polyspace の注釈] ウィンドウを複数回開きます。毎回、1 つのタイプの Polyspace の結果に対応する注釈を追加します。複数の異なる注釈がある場合、それらは互いに追加されます。これらの注釈は、Simulink エディターでは表示できません。生成されたコードを Polyspace を使用して解析するとき、これらの注釈は、Polyspace UI の [結果の詳細] ペインにレビュー情報として表示されます。

生成されたコードに含まれる操作によっては、Code Prover でオレンジ チェックが生じることがあります。たとえば、ある操作がオーバーフローする可能性があるとします。生成されたコードでは、この操作で飽和処理を行うことで、オーバーフローの発生を防ぎます。それでも Polyspace は、オーバーフローの可能性に対し、オレンジ チェックとしてフラグを設定します。これらのチェックをコード コメントで正当化するには、コンフィギュレーション パラメーターの演算子の注釈 (Embedded Coder)を指定します。

制限

注釈が付いたブロックをコピーして、それを別のモデルや同じモデル内の別の位置で使用すると、コンテキストが変わるため注釈が不正確になる可能性があります。

  • Polyspace では、ライブラリおよび非アトミック サブシステムの内部にあるブロックへの注釈付けは許可されていません。そのようなブロックは、多くの異なるコンテキストで再利用されるためです。たとえば、ライブラリ ブロック内部の 1 つのブロックに注釈を付け、そのライブラリ ブロックのすべてのインスタンスで結果を正当化することはできません。

  • Simulink は、別のモデルまたは同じモデル内の別の位置にコピーされたブロック内の、Polyspace 注釈を保持しません。

参考

トピック