このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C:2012 Dir 4.5
Identifiers in the same name space with overlapping visibility should be typographically unambiguous
説明
Identifiers in the same name space with overlapping visibility should be typographically unambiguous 1 .
根拠
ここでの「明確」の意味は、ソース コードが記述されているアルファベットと言語によって異なります。文字列として類似した識別子を使用すると、識別子が紛らわしくなる可能性があります。
ラテン アルファベットを英単語で使用する場合は、少なくとも、識別子を次の要素により区別することは避けてください。
小文字とそれに対応する大文字との交換。
アンダースコア文字の有無。
文字
Oと数字0との交換。文字
Iと数字1との交換。文字
Iと文字lとの交換。文字
Sと数字5との交換。文字
Zと数字2との交換。文字
nと文字hとの交換。文字
Bと数字8との交換。2 文字
rnと 1 文字mとの交換。
Polyspace 実装
チェッカーは、上記文字の違いがあるだけで同じスコープ内の識別子にフラグを設定します。
さらに、チェッカーは以下のルールに従います。
チェッカーは、
do、for、switch、およびwhileで始まるマクロ内で定義された識別子を無視します。2 つの識別子がそれぞれ異なるスコープ内にある場合、それらの識別子の使用はあいまいではありません。チェッカーは、それぞれ異なるスコープ内にある識別子に対してこのルールの違反を報告しません。
チェッカーは、各翻訳単位、つまり各ソース ファイルとインクルードされたヘッダーを個別にチェックしてから、調査結果をマージして、所定の場所での各違反が一度だけ報告されるようにします。
翻訳単位に宣言と定義の両方が含まれる場合、違反は定義に関連付けられます。
翻訳単位に宣言のみが含まれる場合、違反は宣言に関連付けられます。
このルールの二次的影響として、2 つの競合する宣言を含むヘッダーが、対応する定義を含む翻訳単位のみにインクルードされる場合、違反は定義に対してのみ表示されます。他の翻訳単位にインクルードされる場合、違反は宣言と定義の両方に対して表示されます。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: Code design |
| カテゴリ: 推奨 |
| AGC カテゴリ: Readability |
バージョン履歴
R2015b で導入
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.