Входные параметры в Polyspace Bug Finder

Анализ Средства поиска Ошибки не возвращает дефект, вызванный специальным значением неизвестного входа, если вход не ограничен. Polyspace не делает предположения о значении неограниченных входных параметров, когда ваш исходный код является неполным. Например, в следующем Средстве поиска Ошибки кода обнаруживает division by zero в foo_1(), но не в foo_2():

int foo_1(int p) 
{ 
  int x = 0; 
  if ( p > -10 && p < 10 )  /* p is bounded by if statement */
	  x = 100/p;	/* Division by zero detected */
	  
  return x; 
} 

int foo_2(int p)	/* p is unbounded */ 
{ 
  int x = 0; 
  x = 100/p;	/* Division by zero not detected */
  

  return x;	
} 

Примечание

Чтобы установить границы на вашем входе, добавьте ограничения в своем коде, такие как assert или if.

Смотрите также

|