メインコンテンツ

MISRA C++:2008 Rule 2-10-1

Different identifiers shall be typographically unambiguous.

説明

ルール定義

Different identifiers shall be typographically unambiguous. 1

根拠

文字列として似ているが、異なる識別子を使用する場合、コード内で意図せず間違った識別子を使用する可能性があります。このように文字列が似ていて間違いやすい識別子は、診断が困難なバグを引き起こす可能性があります。

明確に区別できる識別子を使用してください。以下の方法を組み合わせて異なる識別子を作成しないでください。

  • 大文字の代わりの小文字の使用、およびその逆。

  • アンダースコア文字の有無。

  • 文字 O と数字 0 との交換。

  • 文字 I と数字 1 との交換。

  • 文字 I と文字 l との交換。

  • 文字 S と数字 5 との交換。

  • 文字 Z と数字 2 との交換。

  • 文字 n と文字 h との交換。

  • 文字 B と数字 8 との交換。

  • 2 文字 rn と 1 文字 m との交換。

Polyspace 実装

異なる 2 つの識別子の違いが、前述のリストで挙げられているあいまいな文字の組み合わせによるものの場合、Polyspace® は欠陥を報告します。ルール チェッカーは、このルールをチェックするときに変数の完全修飾名を考慮しません。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

void func(void) {
    int id1_numval;
    int id1_num_val;  //Non-compliant

    int id2_numval;
    int id2_numVal;   //Non-compliant

    int id3_lvalue;
    int id3_Ivalue;   //Non-compliant

    int id4_xyZ;
    int id4_xy2;      //Non-compliant

    int id5_zerO;
    int id5_zer0;     //Non-compliant

    int id6_rn;
    int id6_m;        //Non-compliant
}

この例では、相互に紛らわしい識別子が使用されているため、ルール違反になっています。

チェック情報

グループ: Lexical Conventions
カテゴリ: 必要

バージョン履歴

R2013b で導入

すべて展開する


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.