|
Повышение точности статического анализа за счет учета значений полей класса, имеющих единственное константное значение
В. С. Карцевab, В. Н. Игнатьевcb a Московский физико-технический институт
b Институт системного программирования им. В.П. Иванникова РАН
c Московский государственный университет имени М. В. Ломоносова
Аннотация:
В данной статье описывается подход, позволяющий с помощью предварительного анализа полей с единственным возможным значением повысить точность работы детекторов статического анализатора уровня символьного выполнения. Помимо этого, детектор предупреждает программиста о забытых модификаторах readonly и о неиспользуемых полях. Детектор был реализован в рамках промышленного статического анализатора SharpChecker для языка C#. Анализ проводится на уровне абстрактного синтаксического дерева, что позволяет снизить затраты времени и ресурсов. Сохраненные значения для ряда полей позволяют использовать конкретные константы вместо символьных значений на этапе символьного выполнения, тем самым повышая точность. В результате удалось заметно улучшить качество некоторых анализаторов, таких как UNREACHABLE_CODE (улучшение на 7.57%) или DEREF_OF_NULL (улучшение на 1.33%), и получить новые срабатывания в случаях с забытым readonly или неиспользуемыми полями. Хорошие результаты позволили включить детектор в основную ветку SharpChecker и предоставить его пользователям. В работе подробно рассмотрен алгоритм работы детектора и приведены примеры срабатываний на наборе ПО с открытым исходным кодом.
Ключевые слова:
статический анализ, C#, неиспользуемое поле, забытый readonly, повышение точности, анализ использования полей, единожды инициализированное поле
Образец цитирования:
В. С. Карцев, В. Н. Игнатьев, “Повышение точности статического анализа за счет учета значений полей класса, имеющих единственное константное значение”, Труды ИСП РАН, 34:6 (2022), 29–40
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp736 https://www.mathnet.ru/rus/tisp/v34/i6/p29
|
Статистика просмотров: |
Страница аннотации: | 10 | PDF полного текста: | 2 |
|