主要内容

MISRA C:2012 Rule 2.8

R2026b

A project should not contain unused object definitions

自 R2025a 起

描述

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 类别:建议
PQL 名称:std.misra_c_2012.R2_8

版本历史记录

在 R2025a 中推出


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:2025

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.