Запишите без дальнейшего чтения

Переменная никогда не читала после присвоения

Описание

Запись без дальнейшего чтения происходит, когда значение, присвоенное переменной, никогда не читается.

Например, вы пишете значение в переменную и затем пишете второе значение прежде, чем считать предыдущее значение. Первая операция записи избыточна.

Риск

Избыточные операции записи часто указывают на программные ошибки. Например, вы забыли читать переменную между двумя последовательными операциями записи или непреднамеренно читать различную переменную.

Фиксация

Идентифицируйте причину, почему вы пишете в переменную, но не читаете ее позже. Ищите общие программные ошибки, такие как случайное чтение различной переменной с аналогичным именем.

Если вы решаете, что операция записи избыточна, удалите операцию.

Примеры

развернуть все

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
Влияние: низко
ID CWE: 398

Введенный в R2013b