Утилита Stack

Типичный пример, объясняют авторы утилиты, — упрощенная проверка на целочисленное переполнение «if a + b < a» вместо «if a > int_max — b»; программисты могут пользоваться первым вариантом, рассчитывая, что в случае превышения максимального для целых чисел объема памяти лишние биты значения суммы будут просто «отрезаться», и в результате получится меньшее число. Однако, некоторые современные компиляторы вместо важной проверки «видят» код, который никогда не выполнится, и отбрасывают его.

Stack же «знает» все подобные приемы, а также код, для которого поведение языка программирования не определено спецификацией, и, просмотрев вашу программу, укажет на все возможные в этой связи ошибки. Утилита работает в два прохода — на первом ищется только мертвый код, на втором — также неопределенное поведение. Фрагменты, которые были «отрезаны» на втором проходе, но не на первом, отмечаются как потенциально проблемные. Программисты Intel, пользующиеся Stack, признают, что у утилиты чрезвычайно низкий уровень ложно-положительных срабатываний.