このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C:2023 Dir 1.1
Any implementation-defined behavior on which the output of the program depends shall be documented and understood
R2024a 以降
説明
命令の定義
Any implementation-defined behavior on which the output of the program depends shall be documented and understood 1
根拠
C 標準によってコンパイラが構成要素に関する独自の仕様を選択することを許可されている場合、コードの構成要素は処理系定義の動作を持ちます。処理系定義の動作の完全なリストは、規格 ISO/IEC 9899:1999 (C99) の付録 J.3 および規格 ISO/IEC 9899:1990 (C90) の付録 G.3 にあります。
すべての処理系定義の動作を理解し、ドキュメント化している場合、プログラムのすべての出力は意図的であり、偶然生成されたものではないと確信できます。
Polyspace 実装
解析では、C99 に記載の次の処理系定義の動作とそれに対応する C90 に記載の動作の可能性を検出します。コンパイラ処理系の動作を把握している場合、解析結果を適切なコメントで正当化します。結果を正当化するには、次のステータスのいずれかを割り当てます。[正当化済み]
、[アクションの予定なし]
、または [欠陥ではない]
ヒント
同じ処理系定義の動作を示すすべての結果を一括で正当化するには、[結果のリスト] ペインの [詳細] 列を使用します。列ヘッダーをクリックして、同じエントリをもつすべての結果がグループ化されるようにします。Shift
キーを押したままで、最初の結果を選択した後、最後の結果を選択します。結果の 1 つにステータスを割り当てます。[詳細] 列が表示されていない場合は、他の列ヘッダーを右クリックして、この列を有効にします。
C99 規格付録参照先 | ドキュメント化する動作 | Polyspace® によるサポート方法 |
---|---|---|
J.3.2: 環境 | main 関数を定義できる別の方法。 | 解析では、次に示す以外の引数と戻り値の型を使用する int main(void) { ... } int main(int argc, char *argv[]) { ... } C99 規格の節 5.1.2.2.1 を参照してください。 |
J.3.2: 環境 | 関数 getenv で使用する、環境名のセットと環境リストを変更する方法。 | 解析では、関数 C99 規格の節 7.20.4.5 を参照してください。 |
J.3.6: 浮動小数点 | FLT_ROUNDS の非標準値によって特徴付けられる丸め動作。 | 解析では、 C99 規格の節 5.2.4.2.2 を参照してください。 |
J.3.6: 浮動小数点 | FLT_EVAL_METHOD の非標準負値によって特徴付けられる評価方法。 | 解析では、 C99 規格の節 5.2.4.2.2 を参照してください。 |
J.3.6: 浮動小数点 | 整数が元の値を正確に表現できない浮動小数点数に変換される場合の丸めの方向。 | 解析では、整数からサイズの小さい浮動小数点データ型への変換にフラグを設定します (例: 64 ビット C99 規格の節 6.3.1.4 を参照してください。 |
J.3.6: 浮動小数点 | 浮動小数点数がより小さい浮動小数点数に変換される場合の丸めの方向。 | 解析では、以下の変換にフラグを設定します。
C99 規格の節 6.3.1.5 を参照してください。 |
J.3.6: 浮動小数点 | FENV_ACCESS プラグマの既定の状態。 | 解析では、以下を除くプラグマの使用にフラグを設定します。 #pragma STDC FENV_ACCESS ON #pragma STDC FENV_ACCESS OFF C99 規格の節 7.6.1 を参照してください。 |
J.3.6: 浮動小数点 | FP_CONTRACT プラグマの既定の状態。 | 解析では、以下を除くプラグマの使用にフラグを設定します。 #pragma STDC FP_CONTRACT ON #pragma STDC FP_CONTRACT OFF C99 規格の節 7.12.2 を参照してください。 |
J.3.11:プリプロセッサ命令 | 認識される STDC ではない #pragma 命令それぞれに対する動作。 | 解析では、以下のプラグマの使用にフラグを設定します。 #pragma pp-tokens STDC は pragma の直後に続きません。次に例を示します。#pragma FENV_ACCESS ON C99 規格の節 6.10.6 を参照してください。 |
J.3.12: ライブラリ関数 | 関数 feraiseexcept が "オーバーフロー" または "アンダーフロー" 浮動小数点例外に加えて "不正確結果" 浮動小数点例外を報告するかどうか。 | 解析では、関数 C99 規格の節 7.6.2.3 を参照してください。 |
J.3.12: ライブラリ関数 | 関数 setlocale に 2 番目の引数として渡される "C" および "" 以外の文字列。 | 解析では、関数 C99 規格の節 7.11.1.1 を参照してください。 |
J.3.12: ライブラリ関数 | FLT_EVAL_METHOD マクロの値が 0 より小さいか 2 より大きい場合に float_t および double_t に定義される型。 | 解析では、 C99 規格の節 7.12 を参照してください。 |
J.3.12: ライブラリ関数 | 商を約分する際に関数 remquo で使用されるモジュラスの基底 2 の対数。 | 解析では、関数 C99 規格の節 7.12.10.3 を参照してください。 |
J.3.12: ライブラリ関数 | 関数 abort 、exit 、または _Exit によってホスト環境に返される終了ステータス。 | 解析では、関数 C99 規格の節 7.20.4.1、7.20.4.3、または 7.20.4.4 を参照してください。 |
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
チェック情報
グループ: The implementation |
カテゴリ: 必要 |
AGC カテゴリ: 必要 |
バージョン履歴
R2024a で導入
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.