メインコンテンツ

MISRA C:2023 Rule 8.9

An object should be declared at block scope if its identifier only appears in a single function

R2024a 以降

説明

ルール定義

An object should be declared at block scope if its identifier only appears in a single function 1 .

根拠

ブロック スコープでオブジェクトを宣言している場合、ブロックの外でオブジェクトに誤ってアクセスする可能性が低くなります。

Polyspace 実装

ルール チェッカーは、1 つの関数内でのみアクセスされるが、ファイル スコープで宣言されている static オブジェクトにフラグを設定します。

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

すべて展開する

static int ctr;   /* Non compliant */

int checkStatus(void);
void incrementCount(void);

void incrementCount(void) {
    ctr=0;
    while(1) {
        if(checkStatus())
            ctr++;
    }
}

この例では、ctr の宣言が準拠していません。これがファイル スコープで宣言されているものの、関数 incrementCount でしか使用されないためです。ctrincrementCount の本体で MISRA C™ に準拠するように宣言します。

チェック情報

グループ: 宣言と定義
カテゴリ: 推奨
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.