メインコンテンツ

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

The identifier name of a non-member object or function with static storage duration should not be reused

説明

ルール定義

The identifier name of a non-member object or function with static storage duration should not be reused 1

根拠

静的ストレージ存続期間を持つ識別子の名前を再利用すると、コードがわかりにくくなり、保守が困難になります。コード内で間違った識別子を使用して、修正が困難なバグを引き起こす可能性があります。

再利用では一方の識別子をもう一方の識別子と間違える可能性が残るため、このルールは識別子が異なる名前空間に属している場合でも適用されます。

Polyspace 実装

このルールは、静的ストレージ存続期間をもつ識別子名が再利用されている状況にフラグを設定します。ルール チェッカーは宣言がある場合にのみ、再定義された関数にフラグを設定します。

このチェッカーは、次のような未使用のコードでは起動されません。

  • インスタンス化されていないテンプレート

  • 呼び出されない関数 static または extern

  • 呼び出されない未定義のローカル関数

  • 未使用の型および変数

トラブルシューティング

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

すべて展開する

namespace NS1 {
    static int WIDTH;
}

namespace NS2 {
    float WIDTH; //Noncompliant
}

この例では、識別子名 WIDTH が 2 つの名前空間 NS1 および NS2 で再利用されています。

チェック情報

グループ: 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.