主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

写入后未被读取

变量在赋值后从未被读取

描述

当赋给变量的值从未被读取时,就会出现此缺陷。

例如,您将一个值写入一个变量,然后在读取上一个值之前写入第二个值。第一次写操作是多余的。

在函数中写入但未读取的指针不会报告此缺陷,因为该指针可能是其他地方使用的变量的别名。

风险

冗余的写操作通常表明存在编程错误。例如,您在两次连续的写操作之间忘记读取变量,或者无意中读取了不同的变量。

修复

确定为什么您将值写入变量但之后没有读取它。查找常见的编程错误,例如不小心读取了名称相似的变量。

如果您确定写操作是多余的,请删除该操作。

示例

全部展开

void sensor_amplification(void)
{
    extern int getsensor(void);
    int level;

    level = 4 * getsensor();            
    /* Defect: Useless write */
}

在变量 level 被赋值为 4 * getsensor() 之后,它不会被读取。

更正 - 使用赋值后的值

一种可能的更正方法是在赋值后使用变量 level

#include <stdio.h>

void sensor_amplification(void)
{
    extern int getsensor(void);
    int level;

    level = 4 * getsensor(); 
    
    /* Fix: Use level after assignment */
    printf("The value is %d", level);
    
}

打印变量 level,读取新值。

结果信息

组:数据流
语言:C | C++
默认值:手写代码时为启动,生成代码时为关闭
命令行语法:USELESS_WRITE
影响

版本历史记录

在 R2013b 中推出

全部展开