Code deactivated by constant false condition

Сегмент кода деактивирован #if 0 директива или if(0) состояние

Описание

Этот дефект возникает, когда блок кода деактивируется с помощью #if 0 директива или if(0) состояние.

Риск

A #if 0 директива или if(0) условие используется для временной деактивации сегментов кода. Если ваш производственный код содержит эти директивы, это означает, что деактивация не была отменена до отгрузки кода.

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

Если сегмент кода присутствует только в целях отладки, удалите сегмент из производственного кода. Если отключение произошло случайно, снимите #if 0 и #endif операторы.

Часто сегмент кода деактивируется для конкретных условий, например, конкретной операционной системы. Используйте макросы с #if директива, чтобы указать эти условия вместо деактивации кода полностью с помощью #if 0 директива. Например, GCC предоставляет макросы для обнаружения Windows® операционная система:

#ifdef _WIN32
   //Code deactivated for all operating systems
   //Other than 32-bit Windows
#endif

Если вы не хотите устранять проблему, добавьте комментарии к своему результату или коду, чтобы избежать другой проверки. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.

Примеры

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

#include<stdio.h>
int Trim_Value(int* Arr,int Size,int Cutoff) 
{
    int Count=0;

    for(int i=0;i < Size;i++){
        if(Arr[i]>Cutoff){
            Arr[i]=Cutoff;
            Count++;
        }
    }

    #if 0
    /* Defect: Code Segment Deactivated */

    if(Count==0){
        printf("Values less than cutoff.");
    }
     #endif

    return Count;
}

В предыдущем коде printf оператор помещается в #if #endif директива. Программа обрабатывает фрагмент в директиве как комментарии кода и не компилируется.

Коррекция - Изменение #if 0 на #if 1

Если вы не намеревались деактивировать printf оператор, одной из возможных коррекций является повторная активация блока кода в #if #endif директива. Чтобы повторно активировать блок, измените #if 0 на #if 1.

#include<stdio.h>
int Trim_Value(int* Arr,int Size,int Cutoff) 
{
 int Count=0;

 for(int i=0;i < Size;i++)
     {
      if(Arr[i]>Cutoff)
            {
             Arr[i]=Cutoff;
             Count++;
            }
     }


 /* Fix: Replace #if 0 by #if 1 */	  
 #if 1  
      if(Count==0)
           {
            printf("Values less than cutoff.");
           }
 #endif

 return Count;
}

Информация о результатах

Группа: Поток данных
Язык: C | C++
По умолчанию: off
Синтаксис командной строки: DEACTIVATED_CODE
Влияние: Низкое
Введенный в R2013b