gpt4 book ai didi

Coverity 对局部变量的默认初始化发出警告

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:11 52 4
gpt4 key购买 nike

有一个覆盖警告类型:UNUSED_VALUE。这是由“代码可维护性问题”下的工具定义的

UNUSED_VALUE:当一个变量被分配一个从函数调用返回的指针值并且从未在源代码中的其他任何地方使用时,它不仅会导致资源使用效率低下,还会导致不确定的行为。此检查器会识别在为它们赋值后从未在程序中的其他任何地方使用的所有变量。

这个检查器似乎也将一些好的编程实践作为警告。

我的问题是有没有更好的方法来做这些事情?还是应该忽略此类警告(并向 Coverity 团队报告任何可能的改进)?

示例1:局部变量的默认初始化

int func()
{
int retval = SUCCESS; //COVERITY says: Unused value (UNUSED_VALUE)assigned_value: Value SUCCESS is assigned to retval here, but that stored value is not used before it is overwritten

retval = recvMessage(); //COVERITY says: value_overwrite: Value SUCCESS is overwritten with value fromrecvMessage

....

}

例子2:释放内存后设置指针为NULL

void func2()
{
char *p = NULL;
....
p = alloc_mem_wrapper();
... do something
free_mem_wrapper(p);
p = NULL; //Coverity says: Unused value (UNUSED_VALUE)assigned_pointer: Value NULL is assigned to p here, but that stored value is not used
... do rest of the job (p is not used again)
}

在我的案例中,90% 的警告都属于上述性质!

最佳答案

为什么不这样做:

int retval = recvMessage();

还有这个

char * p = alloc_mem_wrapper();

(大多数情况下)如果您不知道如何初始化您可能不需要的变量(在您定义它的地方)。

关于Coverity 对局部变量的默认初始化发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30774100/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com