Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

MISRA C:2012 コーディング規約用のモデル アドバイザー チェック

モデルまたはサブシステムに MISRA C:2012 準拠のコードを生成する可能性があることをチェックできます。

参考

Assignment ブロックの使用をチェック

チェック ID: mathworks.misra.AssignmentBlocks

ブロック パラメーター [任意の出力要素が割り当てられない場合のアクション][エラー] または [警告] に設定されていない Assignment ブロックを特定します。

説明

このチェックは、[Simulink][Math Operations] の Simulink ブロック ライブラリで使用可能な Assignment ブロックに適用されます。

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準、CWE 標準、ISO/IEC TS 17961 標準に準拠するコードが生成される可能性が高くなります。

Embedded Coder® および Simulink® Check™ で使用できます。

結果と推奨アクション

条件推奨アクション
モデルまたはサブシステム内に、ブロック パラメーター [任意の出力要素が割り当てられない場合のアクション][エラー] または [警告] に設定されていない、配列の初期化が完了していない Assignment ブロックが含まれている可能性がある。

ブロック パラメーター [任意の出力要素が割り当てられない場合のアクション] をいずれかの推奨値に設定します。

  • Assignment ブロックが Iterator subsystem 内にない場合は [エラー]

  • Assignment ブロックが Iterator subsystem 内にある場合は [警告]

機能および制限事項

  • ライブラリ モデルで実行されます。

  • ライブラリにリンクされたブロックの内容を解析します。

  • マスク サブシステムの内容を解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートの対象外指定が許可されます。

編集時チェック.  このチェックは編集時チェックでサポートされます。ただし、編集時チェックでは Assignment ブロックが Iterator subsystem 内にあるかどうかを判断できないため、次のチェック条件はサポートされません。

ブロック パラメーター [任意の出力要素が割り当てられない場合のアクション] をいずれかの推奨値に設定します。

  • Assignment ブロックが Iterator subsystem 内にない場合は [エラー]

  • Assignment ブロックが Iterator subsystem 内にある場合は [警告]

参考

MISRA C:2012 で推奨されないブロックをチェック

チェック ID: mathworks.misra.BlkSupport

MISRA C:2012 準拠のコード生成でサポートまたは推奨されないブロックを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション

3 次スプライン内挿法または外挿法を使用している Lookup Table ブロックがモデルまたはサブシステム内で見つかった。具体的なブロックは以下のとおりです。

Lookup Table ブロックに対して、他の内挿法および外挿法を検討してください。

推奨されない Lookup Table ブロックがモデルまたはサブシステム内で見つかった。具体的なブロックは以下のとおりです。

  • Lookup Table

  • Lookup Table (2-D)

推奨されない Lookup Table ブロックを置き換えることを検討してください。
S-Function Builder ブロックがモデルまたはサブシステム内で見つかった。S-Function Builder ブロックを量産に推奨されるブロックで置き換えることを検討してください。
From Workspace ブロックがモデルまたはサブシステム内で見つかった。From Workspace ブロックを量産に推奨されるブロックで置き換えることを検討してください。

String ブロックがモデルまたはサブシステム内で見つかった。具体的なブロックは以下のとおりです。

String ブロックを量産に推奨されるブロックで置き換えることを検討してください。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • ライブラリにリンクされたブロックの内容を解析します。

  • マスク サブシステムの内容を解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

編集時チェック.  このチェックは編集時チェックでサポートされます。

参考

サポートされていないブロック名のチェック

チェック ID: mathworks.misra.BlockNames

/ が含まれるブロック名を特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
/ を含むブロック名がモデルまたはサブシステム内で見つかった。/ をブロック名から削除します。

機能および制限事項

  • ライブラリ モデルで実行されます。

  • ライブラリにリンクされたブロックの内容を解析します。

  • マスク サブシステムの内容を解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートの対象外指定が許可されます。

編集時チェック.  このチェックは編集時チェックでサポートされます。

参考

MISRA C:2012 のコンフィギュレーション パラメーターをチェック

チェック ID: mathworks.misra.CodeGenSettings

MISRA C:2012 準拠のコード生成に影響を与える可能性のあるコンフィギュレーション パラメーターを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
数学とデータ型
コンフィギュレーション パラメーター [固定小数点の正味勾配計算に除算を使用][オン] または [整数の逆数の場合にのみ除算を使用] に設定されていない。[固定小数点の正味勾配計算に除算を使用][オン] または [整数の逆数の場合にのみ除算を使用] に設定します。

コンフィギュレーション パラメーター [Inf または NaN のブロックの出力][なし] または [エラー] に設定され、[非有限数のサポート][オン] に設定されている。

コンフィギュレーション パラメーター [Inf または NaN のブロックの出力][なし] に設定され、[非有限数のサポート][オフ] に設定されている。

[非有限数のサポート] に応じて次のようにします。

  • [オン] の場合、[Inf または NaN のブロックの出力][警告] に設定します。

  • [オフ] の場合、[Inf または NaN のブロックの出力][警告] または [エラー] に設定します。

コンフィギュレーション パラメーター [Model Verification ブロックを有効にする][ローカル設定を使用] または [すべて有効] に設定されている。[Model Verification ブロックを有効にする][すべて無効] に設定します。
コンフィギュレーション パラメーター [指示のないイベント ブロードキャスト][なし] または [警告] に設定されている。[指示のないイベント ブロードキャスト][エラー] に設定します。
コンフィギュレーション パラメーター [オーバーフロー時にラップ][なし] に設定されている。コンフィギュレーション パラメーター [オーバーフロー時にラップ][警告] または [エラー] に設定します。
ハードウェア実行
コンフィギュレーション パラメーター [製品ハードウェアの符号付き整数の除算の丸め][未定義] に設定されている。[製品ハードウェアの符号付き整数の除算の丸め][ゼロ方向] または [負方向] に設定します。
コンフィギュレーション パラメーター [算術シフトとして符号付き整数を右にシフト] が選択されている。[算術シフトとして符号付き整数を右にシフト] をオフにします。
シミュレーション ターゲット
コンフィギュレーション パラメーター [コンパイル時の MATLAB 関数の再帰限界値]0 以外の値に設定されている。[コンパイル時の MATLAB 関数の再帰限界値]0 に設定します。
コンフィギュレーション パラメーター [MATLAB 関数での動的メモリ割り当て] が選択されている。[MATLAB 関数での動的メモリ割り当て] をオフにします。
コンフィギュレーション パラメーター [MATLAB 関数の実行時再帰を有効にする] が選択されている。[MATLAB 関数の実行時再帰を有効にする] をオフにします。
コード生成

次のパラメーターのいずれかが選択されている場合に、コンフィギュレーション パラメーター [ビットフィールド宣言子の型指定子]uchar_T に設定されている:

  • boolean データをビットフィールドにパッキング

  • ステート構成を保存するためにビットセットを使用

  • boolean データを保存するためにビットセットを使用

[ビットフィールド宣言子の型指定子]uint_T に設定します。
コンフィギュレーション パラメーター [キャスト モード][標準準拠] に設定されていない。[キャスト モード][標準準拠] に設定します。
コンフィギュレーション パラメーター [コード置換ライブラリ][なし] または [AUTOSAR 4.0] に設定されていない。

[コード置換ライブラリ][なし] または [AUTOSAR 4.0] に設定します。

コンフィギュレーション パラメーター [エクスターナル モード] が選択されている。[エクスターナル モード] をオフにします。
コンフィギュレーション パラメーター [共有定数の生成] が選択されている。[共有定数の生成] をオフにします。

コンフィギュレーション パラメーター [コメントを含める] がオフになっている。

[コメントを含める] を選択します。
コンフィギュレーション パラメーター [MAT ファイルのログ] が選択されている。

[MAT ファイルのログ] をオフにします。

ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [MATLAB ユーザー コメント] がオフになっている。[MATLAB ユーザー コメント] を選択します。
コンフィギュレーション パラメーター [識別子の最大の長さ] の値が指定されていない。値を実装に応じた制限に設定します。既定の設定は 31 です。
コンフィギュレーション パラメーター [かっこのレベル][標準 (標準準拠のためのかっこ)] または [最大 (かっこで優先度を指定)] に設定されていない。[かっこのレベル][標準 (標準準拠のためのかっこ)] または [最大 (かっこで優先度を指定)] に設定します。

ERT ベースのターゲット システムで、[ファイル パッケージ化形式][コンパクト] または [コンパクト (別々のデータ ファイル)] に設定されている場合に、コンフィギュレーション パラメーター [関数宣言に static キーワードを保持] がオフになっている。

[関数宣言に static キーワードを保持] を選択します。
コンフィギュレーション パラメーター [2 のべき乗での乗算を符号付きのビット単位シフトに置換] が選択されている。[2 のべき乗での乗算を符号付きのビット単位シフトに置換] をオフにします。
コンフィギュレーション パラメーター [共有コードの配置][自動] に設定されている。

[共有コードの配置][共有場所] に設定します。

ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [連続時間のサポート] が選択されている。 [連続時間のサポート] をオフにします。
ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [インラインでない S-Function のサポート] が選択されている。 [インラインでない S-Function のサポート] をオフにします。
コンフィギュレーション パラメーター [到達不能な場合、switch ステートメントの default ケースを生成しない] が選択されている。[到達不能な場合、switch ステートメントの default ケースを生成しない] をオフにします。
コンフィギュレーション パラメーター [システム生成の識別子][クラシック] に設定されている。[システム生成の識別子][短縮形] に設定します。
コンフィギュレーション パラメーター [システム ターゲット ファイル] が GRT ベースのターゲットに設定されている。[システム ターゲット ファイル] を ERT ベースのターゲットに設定します。
[コード インターフェイスのパッケージ化][再利用可能な関数] に設定されている場合に、コンフィギュレーション パラメーター [モデルの初期化に動的メモリ割り当てを使用] が選択されている。

[モデルの初期化に動的メモリ割り当てを使用] をオフにします。

メモ

[コード インターフェイスのパッケージ化][再利用可能な関数] に設定されている場合にのみ選択します。

アクション結果

[すべて変更] をクリックすると、パラメーター値が推奨値に変わります。

メモ

GRT ベースのターゲットが設定されたモデルに対して [すべて変更] をクリックした場合、モデル アドバイザーは [システム ターゲット ファイル] コンフィギュレーション パラメーターを ERT ベースのシステムに更新しません。

パラメーター サブチェックは、結果テーブルで "D" が付いたパラメーターの結果によって異なります。結果が "D-Warning" である場合、結果テーブルの [現在の値] 列には、そのサブチェックに対して "前提条件の制約を満たしていません" と示されます。パラメーターの変更後、チェックを再実行します。

メモ

一部のサブチェックは ERT ベース システムのコンフィギュレーション パラメーターに固有です。モデルを ERT ベース システムに変更しない限り、これらのパラメーターは [すべて変更] をクリックしても更新されません。

機能および制限事項

次のパラメーター設定は、チェックの参考情報です。

  • BooleansAsBitfields

  • CodeInterfacePackaging

  • ERTFilePackagingFormat

  • SupportNonFinite

このチェックでは参照モデルは確認されません。

参考

浮動小数点値の等式演算と不等式演算のチェック

チェック ID: mathworks.misra.CompareFloatEquality

浮動小数点値の等式演算と不等式演算を特定します。

説明

このチェックは浮動小数点値の等式演算または不等式演算の原因となるソースにフラグを付けます。

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準および CWE 標準に準拠するコードが生成される可能性が高くなります。

浮動小数点値の等式演算または不等式演算を含むブロックが Polyspace® の注釈で正当化される場合、このチェックはフラグを付けません。チェックを実行すると、正当化情報のある等式演算または不等式演算を含むブロックは、[正当化情報のあるブロック] テーブルにリストされます。

Embedded Coder および Simulink Check で使用できます。

メモ

モデルに Stateflow の要素が含まれている場合、Stateflow® ライセンスが必要です。

結果と推奨アクション

条件推奨アクション

モデル オブジェクトに浮動小数点値の等式演算または不等式演算がある。

等式演算と不等式演算には浮動小数点ではない値を使用することを検討してください。

機能および制限事項

次のことが可能です。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

符号付き整数のビット演算のチェック

チェック ID: mathworks.misra.CompliantCGIRConstructions

符号付き整数のビット演算を含む Simulink ブロックを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準および CWE 標準に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

メモ

モデルに Stateflow の要素が含まれている場合、Stateflow ライセンスが必要です。

結果と推奨アクション

条件推奨アクション
モデルに符号付き整数のビット演算を含むブロックがある。符号なし整数のビット演算を使用することを検討してください。

機能および制限事項

次のことが可能です。

  • このチェックでは、モデル全体に対してコードが生成されることを想定しています。サブシステムのビルドまたはエクスポート関数によってコードが生成されると、チェックにより正しくない結果が生成される場合があります。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

再帰関数の呼び出しのチェック

チェック ID: mathworks.misra.RecursionCompliance

Stateflow チャートで再帰関数呼び出しを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードが生成される可能性が高くなります。このチェックは再帰関数呼び出しをもつチャートにフラグを付けます。

Embedded Coder および Simulink Check で使用できます。

メモ

モデルに Stateflow の要素が含まれている場合、Stateflow ライセンスが必要です。

結果と推奨アクション

条件推奨アクション

チャートに再帰関数呼び出しがある。

再帰関数呼び出しを削除します。

参考

default ケースをもたない switch case 式のチェック

チェック ID: mathworks.misra.SwitchDefault

default ケースをもたない switch case 式を特定します。

説明

このチェックは、default ケースがなく switch case 式をもつモデル オブジェクトにフラグを付けます。

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準、CWE 標準、ISO/IEC TS 17961 標準に準拠するコードが生成される可能性が高くなります。

default ケースをもたないブロックが Polyspace の注釈で正当化される場合、このチェックはフラグを付けません。チェックを実行すると、正当化情報のある default ケースをもたないブロックは、[正当化情報のあるブロック] テーブルにリストされます。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション

モデル オブジェクトに default ケースがない switch case 式が含まれている。

Switch Case ブロックの場合、ブロック パラメーター [default ケースを表示] を選択して default ケースを明示的に指定することを検討してください。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

編集時チェック.  このチェックは編集時チェックでサポートされます。

参考

C/C++ 量産コード展開に推奨されないブロックがないかチェック

チェック ID: mathworks.codegen.PCGSupport

コード生成でサポートされていないか、C/C++ 量産コード展開に推奨されないブロックを特定します。

説明

このチェックで、C/C++ 量産コード生成に推奨されないモデル構成を部分的に特定します。Simulink Coder™ および Embedded Coder の場合、Simulink ブロック サポート (Simulink Coder)のテーブルにこのようなモデル構成の ID が示されています。

場合によっては、このチェックはコード生成でサポートされているブロックにフラグを付けます。これらのブロックについては、サポート メモで提供される脚注情報を確認し、モデル アドバイザーで提供される推奨アクションに従う必要があります。

このチェックの推奨事項に従うと、CERT C 標準、CWE 標準、ISO/IEC TS 17961 標準に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
モデルまたはサブシステムに、量産コード展開に使用されるべきではないブロックが含まれている。結果にリストされるブロックを置き換えることを検討してください。状態を特定するには、問題のある項目のリストの要素をクリックします。
モデルまたはサブシステムに、量産コード生成でサポートされるが推奨されないブロックが含まれている。サポート メモを確認し、モデル アドバイザーで提供される推奨アクションに従います。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • ライブラリにリンクされたブロックの内容を解析します。

  • マスク サブシステムの内容を解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートを除外できます。

編集時チェック

このチェックは編集時チェックでサポートされます。

参考

AUTOSAR 受信側インターフェイスの欠落しているエラー ポートのチェック

チェック ID: mathworks.misra.AutosarReceiverInterface

一致するエラー ポートのない AUTOSAR 受信側インターフェイスの入力端子を特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードが生成される可能性が高くなります。このチェックは、エラー ポートが欠落している AUTOSAR 受信側インターフェイスの入力端子にフラグを付けます。次の表は、対応するエラー ポートが欠落している場合に、チェックによりフラグが付けられる受信側インターフェイス ポートの AUTOSAR データ アクセス モード タイプを示しています。

AUTOSAR データ アクセス モード タイプチェックによるフラグの有無
ImplicitReceiveあり
ExplicitReceiveあり
QueuedExplicitReceiveなし
ErrorStatusなし
ModeReceiveなし
IsUpdatedなし
EndToEndReadあり
ExplicitReceiveByValなし
otherwiseなし

欠落しているエラー ポートが Polyspace の注釈で正当化される場合、このチェックはフラグを付けません。チェックを実行すると、正当化情報のある欠落しているエラー ポートは、[正当化情報のあるブロック] テーブルにリストされます。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション

AUTOSAR 受信側インターフェイスの入力端子に一致するエラー ポートがない。

欠落しているエラー ポートを追加して、対応する AUTOSAR 受信側インターフェイスの入力端子にマッピングします。

データ アクセス モードが ImplicitReceiveExplicitReceive、または EndToEndRead のときに、AUTOSAR 受信側インターフェイス ポートに一致するエラー ポートがない。

欠落しているエラー ポートを追加して、対応する AUTOSAR 受信側インターフェイスの入力端子にマッピングします。

機能および制限事項

次のことが可能です。

  • トップ レイヤー/ルート レベル モデルを解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

モデル関数内の欠落している const 修飾子をチェック

チェック ID: mathworks.misra.ModelFunctionInterface

入力データのポインター内で欠落している const 修飾子を特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードが生成される可能性が高くなります。このチェックは、const 修飾子をもたない入力データのポインターにフラグを付けます。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
const 修飾子が入力データのポインターに定義されていない。const 修飾子を入力データのポインターに追加することを検討してください。

参考

  • MISRA C:2012, Rule 8.13

  • MISRA C (Embedded Coder)

整数の語長をチェック

チェック ID: mathworks.misra.IntegerWordLengths

ハードウェア実行設定に準拠していない整数の語長を特定します。

説明

このチェックはハードウェア実行設定で許容されているビット数を超える語長の整数にフラグを付けます。

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準および CWE 標準に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

メモ

モデルに Stateflow の要素が含まれている場合、Stateflow ライセンスが必要です。

結果と推奨アクション

条件推奨アクション

モデル オブジェクトにハードウェア実行設定に準拠していない整数の語長が含まれている。

長さが許容されているビット数を超えないように整数を更新します。許容されているビット数は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行][デバイスの詳細] ペインで確認できます。

機能および制限事項

次のことが可能です。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

バス要素の名前として使用されるバス オブジェクト名のチェック

チェック ID: mathworks.misra.BusElementNames

バス要素の名前として使用されるバス オブジェクト名を識別します。

説明

このチェックを使用すると、組み込みアプリケーション用の MISRA C:2012 準拠コードが生成される可能性が高くなります。このチェックは、Simulink.Bus オブジェクト名が Simulink.Bus 要素名として使用されたインスタンスにフラグを付けます。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
バス オブジェクト名がバス要素名として使用されている。フラグの付いたバス オブジェクト名またはバス要素名を変更して、同一にならないようにします。

参考

  • MISRA C:2012, Rule 5.6

  • MISRA AC AGC, Rule 5.3

  • MISRA C (Embedded Coder)