Аннотация:
Обнаружение мёртвого кода традиционно используется в компиляторах как один из видов оптимизации с целью его удаления. Мёртвые вызовы функций могут рассматриваться и как вид программных дефектов, которые могут указывать на серьёзные ошибки в реализации логики программы. В статье описывается реализация нового детектора, разработанного как часть инструмента статического анализа Svace, а также исследуются специфические случаи мёртвых вызовов, демонстрирующие особенности задачи поиска таких ситуаций в качестве программных ошибок по сравнению с формальным определением мёртвого кода.
Ключевые слова:
статический анализ, дефекты программного обеспечения, мёртвый код, бесполезный код, побочные эффекты, анализатор SVACE, языки программирования C/C++, язык программирования Go, символьное выполнение, анализ потока данных, анализ живых переменных, межпроцедурный анализ