LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

Вот кстати, по поводу сдвигов. У вас есть такая диагностика http://www.viva64.com/ru/examples/V3001/ которая определяет одинаковые проверки в условиях. Но можете ли вы обнаруживать одинаковые проверки, записанные разным образом? Например одну и ту же проверку можно записать сдвигом и через остаток от деления:

int test(unsigned int a)
{
  if (  ((a >> 1) << 1) == 12 || (a - (a % 2)) == 12 )
  {
    return 1;
  }
  return 0;
}
Ваша PVS-studio это может обнаружить как V3001? Слышали ли вы про Frama-C, автоматические доказательства корректности, вот это все? Есть ли у вас нечто подобное?

Исправление SZT, :

Вот кстати, по поводу сдвигов. У вас есть такая диагностика http://www.viva64.com/ru/examples/V3001/ которая определяет одинаковые проверки в условиях. Но можете ли вы обнаруживать одинаковые проверки, записанные разным образом? Например одну и ту же проверку можно записать сдвигом и через остаток от деления:

int test(unsigned int a)
{
  if (  ((a >> 1)<<1) == 12 || (a - (a % 2)) == 12 )
  {
    return 1;
  }
  return 0;
}
Ваша PVS-studio это может обнаружить как V3001?

Исправление SZT, :

Вот кстати, по поводу сдвигов. У вас есть такая диагностика http://www.viva64.com/ru/examples/V3001/ которая определяет одинаковые проверки в условиях. Но можете ли вы обнаруживать одинаковые проверки, записанные разным образом? Например одну и ту же проверку можно записать сдвигом и через остаток от деления:

int test(unsigned int a)
{
  if ( ((a << 1)>>1) == 12 || (a - (a % 2)) == 12 )
  {
    return 1;
  }
  return 0;
}
Ваша PVS-studio это может обнаружить как V3001?

Исходная версия SZT, :

Вот кстати, по поводу сдвигов. У васесть такая диагностика http://www.viva64.com/ru/examples/V3001/ которая определяет одинаковые проверки условия. Но можете ли вы обнаруживать одинаковые проверки, записанные разным образом? Например одну и ту же проверку можно записать сдвигом и через остаток от деления:

int test(unsigned int a)
{
  if ( ((a << 1)>>1) == 12 || (a - (a % 2)) == 12 )
  {
    return 1;
  }
  return 0;
}
Ваша PVS-studio это может обнаружить как V3001?