TGViewer
Бестиарий программирования Бестиарий программирования @programming_tales · 1.14K subscribers
Post #271 321
РБПО-018. Термин: динамический анализ кода программы (часть 3/3)
Отдельно проясню мысль "не может проверить, что код выполняет то, что задумывал программист". А разве, например, статический анализ может? Да, иногда может.

Например, динамический анализ будет слеп ко многим опечаткам. Код может работать без деления на ноль, выхода за границу массива, разыменования указателя и т.д., но при этом делать не то, что надо. С точки зрения динамического анализа невозможно отделить правильное от неправильного. А статический анализ может, так как он руководствуется аномалией на уровне текста программы. Пример:
Value buildTernaryFn(TernaryFn ternaryFn, Value arg0, Value arg1, Value arg2)
{
bool headBool = isInteger(arg0) &&
arg0.getType().getIntOrFloatBitWidth() == 1;
bool tailFloatingPoint =
isFloatingPoint(arg0) &&
isFloatingPoint(arg1) &&
isFloatingPoint(arg2);
bool tailInteger = isInteger(arg0) &&
isInteger(arg1) &&
isInteger(arg1);
OpBuilder::InsertionGuard g(builder);
builder.setInsertionPointToEnd(&block);
....
}

Эту ошибку PVS-Studio нашёл в LLVM. Здесь дважды повторяется arg1: isInteger(arg1) && isInteger(arg1) вместо использования arg2. С точки зрения статического анализатора аномалия очевидно.

С точки зрения динамического анализатора ничего странного. Повторно выполняется какая-то проверка. Ну и что? Это не признак ошибки. Таких повторных проверок в бинарном коде может быть полно при выключенной оптимизации. А при включённой оптимизации компилятор выбросит повторную проверку, и придраться вообще не к чему.
More from @programming_tales
  1. Oct 7, 2026Напоминаю, что мы подготовили подборку материалов и вебинаров по теме процессов разработки…
  2. Oct 2, 2026Запись вебинара: Go vet не поможет... Как сделать свой анализатор кода для Go?
  3. Oct 2, 2026В целях нетворкинга и просто так приглашаю коннектиться в TenChat — что-то типа LinkedIn.…
  4. Sep 29, 2026Сегодня коллега демонстрирует, как визуально проявляют себя баги в Java коде: Нашёл ошибки…
  5. Sep 29, 2026photo post
  6. Sep 28, 2026На днях выступал с докладом на форуме "Безопасность транспортных средств", организованном…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →