【发布时间】:2017-07-24 18:45:53
【问题描述】:
尽量简化情况。所以我有一堂课:
class C
{
int * field;
public:
C() : field(nullptr) {}
void init(int* f) { field = f; }
int getI1() { return *field; }
int getI2() { return *field; }
};
生成 2 个 Lint 警告 613(可能使用空指针 'C::i'...)
我知道调用 getI1() 或 getI2() 时“字段”不会为空。不幸的是我无法在构造函数中初始化它。所以我想禁止 Lint 警告。我可以这样做
class C
{
int * field;
public:
C() : field(nullptr) {}
void init(int* f) { field = f; }
int getI1() { return *field; } //lint !e613
int getI2() { return *field; } //lint !e613
};
但在我的真实情况下:
1) 这样的类相当多,每个类都有很多 使用这个指针的函数。
2) 我的管理层不允许我添加太多 lint 代码中的 cmets。
所以我的问题是:有没有人知道一个命令行选项可以让我告诉 Lint“我知道代码不是最好的,停止检查这个特定的成员变量是否为空”?
类似于 -sem 参数的东西,也许吧?
【问题讨论】:
-
为什么不重构类以摆脱
init并让代码发生在构造函数中? -
这是我想做的第一件事。但是不能,不幸的是,在真实代码中它太冒险了。
-
抱歉,粘贴到这里后正在更改代码。修复了第二个代码实例。抑制在 cmets 中,而不是在成员名称中。