Повышение полноты статического анализа приложений, использующих фреймворки, методом генерации эквивалентного кода


Повышение полноты статического анализа приложений, использующих фреймворки, методом генерации эквивалентного кода

Бородавко Н.А. (ИСП РАН, Москва, Россия; МГУ, Москва, Россия)
Игнатьев В.Н. (ИСП РАН, Москва, Россия; МГУ, Москва, Россия)

Аннотация

В статье описывается подход к повышению полноты анализа за счет генерации эквивалентного кода из внешних файлов. Метод восстанавливает неявные связи между элементами пользовательского интерфейса и обработчиками событий путем анализа разметки, извлечения семантических связей и генерации эквивалентного кода на C#, который моделирует сценарии взаимодействия с пользователем. Этот метод был реализован в статическом анализаторе SharpChecker с акцентом на приложения WPF. Он включает в себя синтаксический анализ XAML, извлечение ViewModel для шаблонов MVVM и генерацию кода на основе CodeDom, имитирующую обработку событий и вызовы команд в ответ на действия пользователя. Эксперименты в пяти проектах WPF с открытым исходным кодом выявили 77 новых положительных предупреждений, включая ошибки деления на ноль и ранее пропущенные разыменования нулевых указателей. Этот подход обеспечивает минимальные затраты на анализ и легко интегрируется с существующими анализаторами. Результаты демонстрируют, что генерация эквивалентного кода значительно повышает полноту статического анализа использующих фреймворки приложений.

Ключевые слова

статический анализ; язык программирования C#; повышение полноты; фреймворки; внешние файлы; обработка событий; паттерн MVVM; генерация кода.

Издание

Труды Института системного программирования РАН, том 38, вып. 2, 2026, стр. 95-110.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2026-38(2)-7

Для цитирования

Бородавко Н.А., Игнатьев В.Н. Повышение полноты статического анализа приложений, использующих фреймворки, методом генерации эквивалентного кода. Труды Института системного программирования РАН, том 38, вып. 2, 2026, стр. 95-110. DOI: 10.15514/ISPRAS-2026-38(2)-7.

Полный текст статьи в формате pdf Вернуться к содержанию тома