Поиск множественного перечисления коллекций в исходном коде на языке C# методами статического анализа


Поиск множественного перечисления коллекций в исходном коде на языке C# методами статического анализа

Ханевская К.А. (ИСП РАН, Москва, Россия; МФТИ, Московская. обл., Россия)
Тяжкороб У.В. (ИСП РАН, Москва, Россия; МФТИ, Московская. обл., Россия)
Игнатьев В.Н. (ИСП РАН, Москва, Россия; МГУ, Москва, Россия)

Аннотация

Статья посвящена проблеме множественного перечисления отложенно инициализированных коллекций в языке C#. Множественные перечисления таких коллекций могут приводить к существенному снижению производительности и непредсказуемому поведению программы. В статье предлагается метод обнаружения ошибок множественного перечисления, реализованный в рамках промышленного статического анализатора SharpChecker. Алгоритм основан на символьном выполнении, чувствительном к потоку управления и путям выполнения, и поддерживает межпроцедурный анализ. Детектор выявляет как повторные перечисления в пределах одного метода, так и возникающие через цепочки вызовов методов. Экспериментальная оценка на 20 проектах с открытым исходным кодом показала высокую долю истинных предупреждений (около 95%). Результаты демонстрируют эффективность и практическую ценность предложенного подхода. Это позволяет включить его в число основных детекторов и предоставить функциональность пользователям.

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

статический анализ; символьное выполнение; поиск ошибок; множественное перечисление; LINQ-методы; отложенная инициализация; работа с коллекциями.

Издание

Труды Института системного программирования РАН, том 38, вып. 6, часть 1, 2026, стр. 9-22.

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

DOI: 10.15514/ISPRAS-2026-38(6)-1

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

Ханевская К.А., Тяжкороб У.В., Игнатьев В.Н. Поиск множественного перечисления коллекций в исходном коде на языке C# методами статического анализа. Труды Института системного программирования РАН, том 38, вып. 6, часть 1, 2026, стр. 9-22. DOI: 10.15514/ISPRAS-2026-38(6)-1.

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