有一个覆盖警告类型: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% 仅属于上述性质!