主要内容

AUTOSAR C++14 Rule M3-4-1

An identifier declared to be an object or type shall be defined in a block that minimizes its visibility

描述

规则定义

An identifier declared to be an object or type shall be defined in a block that minimizes its visibility.

理由

在尽可能小的模块作用域内定义变量,可以降低这些变量日后被意外访问的可能性。

例如,如果某个对象仅在一个函数中访问,请将该对象声明为该函数的局部对象。

Polyspace 实现

规则检查项会判断某个对象是否仅在一个模块中使用。如果对象在一个模块中使用,但在该模块外部定义,检查项将判定为违规。

如果您在基于范围的 for 循环外部声明了一个变量,但只在循环模块内部使用它,则 Polyspace® 会标记该变量。如果您无法在循环模块内部声明该变量,请在结果或代码中使用注释对此结果进行申述。请参阅通过 Bug 修复或申述在 Polyspace 用户界面中处理结果

故障排除

如果您预期会出现违规,而 Polyspace 未报告该违规,请参阅诊断为何编码规范违规未按预期显示

示例

全部展开

static int countReset; //Noncompliant

volatile int check;

void increaseCount() {
    int count = countReset;
    while(check%2) {
     count++;
    }
}

在此示例中,变量 countReset 声明为全局变量,且仅在一个函数中使用。合规的解决方案是将变量声明为函数的局部变量,以降低其可见性。

检查信息

组:基本概念
类别:必需、自动

版本历史记录

在 R2019a 中推出

全部展开