メインコンテンツ

MISRA C:2023 Rule 2.8

A project should not contain unused object definitions

R2024b 以降

説明

ルール定義

A project should not contain unused object definitions. 1

根拠

オブジェクトの定義と宣言を削除した後でプログラムがコンパイルされる場合に、そのオブジェクトが使用されていません。このような未使用のオブジェクトは冗長であるのか、誤って未使用の状態になっているのかが不明確なため、混乱を招く可能性があります。

Polyspace 実装

Polyspace® は、内部リンクを含む次のような未使用の変数に対する違反を報告します。

  • 未使用のローカル変数

  • static として宣言されたが未使用のグローバル変数

  • const 修飾子を使用しているものの extern 修飾子を使用せずにヘッダー ファイル外部で宣言された未使用のグローバル変数

このルール違反は変数宣言に対して報告されます。Polyspace は未使用の関数パラメーターに対する違反を報告しません。

トラブルシューティング

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

すべて展開する

この例では、static 変数 sensor1 に内部リンクがありますが、この変数はファイルで使用されていません。したがって、Polyspace は sensor1 の宣言をルール違反として報告します。

#include <stdint.h>

static int16_t sensor1; // Noncompliant
static int16_t sensor2; // Compliant

int16_t getSensorValues() {
    return sensor2;
}

チェック情報

グループ: 未使用コード
カテゴリ: 推奨
AGC カテゴリ: 推奨

バージョン履歴

R2024b で導入


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.