Труды института системного программирования РАН
RUS  ENG    ЖУРНАЛЫ   ПЕРСОНАЛИИ   ОРГАНИЗАЦИИ   КОНФЕРЕНЦИИ   СЕМИНАРЫ   ВИДЕОТЕКА   ПАКЕТ AMSBIB  
Общая информация
Последний выпуск
Архив

Поиск публикаций
Поиск ссылок

RSS
Последний выпуск
Текущие выпуски
Архивные выпуски
Что такое RSS



Труды ИСП РАН:
Год:
Том:
Выпуск:
Страница:
Найти






Персональный вход:
Логин:
Пароль:
Запомнить пароль
Войти
Забыли пароль?
Регистрация


Труды института системного программирования РАН, 2016, том 28, выпуск 1, страницы 21–40
DOI: https://doi.org/10.15514/ISPRAS-2016-28(1)-2
(Mi tisp2)
 

Эта публикация цитируется в 7 научных статьях (всего в 7 статьях)

Инфраструктура статического анализа программ на языке C#

В. К. Кошелев, В. Н. Игнатьев, А. И. Борзилов

Институт системного программирования РАН, 109004, Россия, г. Москва, ул. А. Солженицына, дом 25
Список литературы:
Аннотация: В работе рассмотрены различные аспекты статического анализа программ на языке C# с целью обнаружения максимального количества ошибок за минимально приемлемое время. Описан полный цикл статического анализа программного обеспечения, при этом основное внимание уделяется особенностям, возникающим при анализе языка C#. Рассмотрены методы, позволяющие учитывать популярные возможности языка на всех уровнях анализа: построение графа вызовов и графа потока управления, проведение анализа потоков данных и чувствительного к контексту и путям межпроцедурного анализа. Предлагается метод символьного исполнения, основанный на таких работах, как Bounded Model Checking и Saturn Software Analysis Project. В статье описана организация модели памяти, позволяющая как проводить точный внутрипроцедурный анализ, так и создавать компактные представления для привязанных к функциям условий, используемые при межпроцедурном анализе. Особое внимание уделяется теме оптимизации возникающих на этапе чувствительного к путям анализа условий. Условия необходимо оптимизировать как по размеру, поскольку при межпроцедурном чувствительном к путям анализе необходимо сохранять большое количество условий для каждой проанализированной функции, так и по сложности, поскольку время анализа ограничено. Решение условий производится при помощи современных SMT-решателей, таких как Microsoft Z3 Prover. В статье также рассмотрены различные подходы к моделированию поведения библиотечных функций: при помощи резюме в виде набора признаком или в виде упрощенных реализаций на языке C#. Все приведённые решения реализованы в инструменте статического анализа SharpChecker и протестированы на наборе проектов различного объема (от 1.5 тыс. до 1.35 млн. строк кода) с открытым исходным кодом.
Ключевые слова: Roslyn, C#, статический анализ, использование нулевого указателя, чувствительность к путям, чувствительность к контексту, резюме функции, поиск дефектов.
Реферативные базы данных:
Тип публикации: Статья
Образец цитирования: В. К. Кошелев, В. Н. Игнатьев, А. И. Борзилов, “Инфраструктура статического анализа программ на языке C#”, Труды ИСП РАН, 28:1 (2016), 21–40
Цитирование в формате AMSBIB
\RBibitem{KosIgnBor16}
\by В.~К.~Кошелев, В.~Н.~Игнатьев, А.~И.~Борзилов
\paper Инфраструктура статического анализа программ на языке C\#
\jour Труды ИСП РАН
\yr 2016
\vol 28
\issue 1
\pages 21--40
\mathnet{http://mi.mathnet.ru/tisp2}
\crossref{https://doi.org/10.15514/ISPRAS-2016-28(1)-2}
\elib{https://elibrary.ru/item.asp?id=26166300}
Образцы ссылок на эту страницу:
  • https://www.mathnet.ru/rus/tisp2
  • https://www.mathnet.ru/rus/tisp/v28/i1/p21
  • Эта публикация цитируется в следующих 7 статьяx:
    Citing articles in Google Scholar: Russian citations, English citations
    Related articles in Google Scholar: Russian articles, English articles
    Труды института системного программирования РАН
     
      Обратная связь:
     Пользовательское соглашение  Регистрация посетителей портала  Логотипы © Математический институт им. В. А. Стеклова РАН, 2024