Write without a further read

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

Описание

Этот дефект возникает, когда значение, присвоенное переменной, никогда не считывается.

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

Риск

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

Зафиксировать

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

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

Примеры

расширить все

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++
По умолчанию: On для рукописного кода, off для сгенерированного кода
Синтаксис командной строки: USELESS_WRITE
Влияние: Низкое
ИДЕНТИФИКАТОР CWE: 398
Введенный в R2013b