Тип работы:
Предмет:
Язык работы:


Экспериментальное исследование алгоритмов контекстно-свободной достижимости применительно к задачам статического анализа кода

Работа №142478

Тип работы

Дипломные работы, ВКР

Предмет

программирование

Объем работы32
Год сдачи2023
Стоимость4800 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
37
Не подходит работа?

Узнай цену на написание


Введение 4
1. Постановка задачи 5
2. Обзор 6
2.1. Терминология 6
2.2. Анализ псевдонимов 8
2.3. Points-to анализ, учитывающий поля 10
2.4. Алгоритмы КС-достижимости, основанные на операциях
линейной алгебры 11
2.4.1. Матричный алгоритм 11
2.4.2. Тензорный алгоритм 12
2.4.3. Инкрементальная версия тензорного алгоритма . 13
2.5. Исследуемые реализации 15
3. Адаптация тензорного алгоритма для Points-to анализа,
учитывающего поля 16
3.1. Применение модификации для анализа псевдонимов ... 18
3.2. Особенности реализации 19
4. Оптимизация реализации матричного алгоритма 22
5. Эксперименты 23
5.1. Тестовый стенд 23
5.2. Тестовые данные 23
5.3. Замеры времени работы и потреблетния памяти 23
5.4. Оптимизация реализации матричного алгоритма 25
5.5. Сравнение алгоритмов КС-достижимости 26
Заключение 30
Список литературы 31

Статический анализ играет важную роль в задаче поиска ошибок в коде. Однако многие из методов статического анализа основаны на сопоставлении участков кода с некоторым шаблоном: если участок ко­да соответствует шаблону, считается, что он содержит ошибку. Такой подход может приводить как к пропуску существующих ошибок, так и выдаче ложных предупреждений. Алгоритмы статического анализа, которые выделяют ошибки на основе различных свойств программы, например, контекстов вызова и потока управления, позволяют обнару­живать больше истинных ошибок и сообщать меньше ложных преду­преждений.
Многие виды статического анализа могут быть сформулированы как задача контекстно-свободной (КС) достижимости. Один из примеров — анализ псевдонимов (анализ указате­лей). Он позволяет обнаруживать использование освобождённой памя­ти, взаимные блокировки и обращение к выделенной памяти через тип с несоответствующим размером. Ещё один пример — Points-to анализ, учитывающий поля, особенностью которого являются большие грамма­тики, используемые для анализа.
Существует множество алгоритмов, решающих задачу КС- достижимости. Среди них можно выделить алгоритмы, основанные на операциях линейной алгебры, так как такие операции хорошо поддаются распараллеливанию. В исследовании Никиты Мишина и др. был произведён сравнительный анализ времени работы нескольких реализаций матричного алгоритма Рустама Ази­мова, основанных на различных специализированных матричных библиотеках. Однако графы, на которых проводилось исследование, значительно меньше получаемых по исходному коду для статического анализа.
В данной работе предлагается изучить различные алгоритмы КС- достижимости в графах и сравнить их производительность на больших графах, полученных по реальным программам.
1. Постановка задачи
Целью данной работы является экспериментальное исследование ал­горитмов КС-достижимости в задаче статического анализа кода.
Для достижения цели были поставлены следующие задачи.
1. Рассмотреть возможность применения алгоритмов, основанных на операциях линейной алгебры, для Points-to анализа, учитываю­щего поля, и предложить модификацию алгоритма, подходящую для этого анализа.
2. Оптимизировать реализации алгоритмов, основанных на операци­ях линейной алгебры.
3. Провести замеры производительности алгоритмов, основанных на операциях линейной алгебры, на графах, полученных по ре­альным программам, сравнить их с другими алгоритмами КС- достижимости.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В ходе работы были достигнуты следующие результаты.
• Предложена модификация тензорного алгоритма для Points-to анализа, учитывающего поля, показавшая наилучшее время ра­боты на небольших графах среди алгоритмов, основанных на опе­рациях линейной алгебры. Однако эксперименты показали, что из-за большого потребления памяти алгоритм практически непри­меним для данного вида анализа.
• Оптимизирована реализация матричного алгоритма из библиоте­ки CFPQ_PyAlgo, эффективность оптимизации эксперименталь­но проверена.
• Проведены замеры производительности реализаций алгоритмов КС-достижимости, которые показали, что алгоритмы, основан­ные на операциях линейной алгебры, достаточно эффективны для анализа псевдонимов, но из-за больших размеров грамматики ма­лоэффективны для Points-to анализа, учитывающего поля.
Так как реализации алгоритма, основанного на произведении Кро- некера, и его вариации плохо применимы для Points-to анализа, учи­тывающего поля, в силу очень большого объёма потребляемой памяти под пересечение графа и рекурсивного автомата, в дальнейшем можно рассмотреть следующие шаги по оптимизации матричного алгоритма для применения его к данному типу анализа.
• Разработка инкрементальной версии матричного алгоритма, в ко­торой полученные на предыдущих итерациях данные не будут пе­ресчитываться в дальнейшем, что позволит сократить затрачива­емое на умножение матриц время.
• Специализация матричного алгоритма для данного анализа, не требующего перевода грамматики в ОНФХ и вычисления дости­жимости для нетерминала FlowsTo непосредственно, что позво­лит значительно сократить количество перемножений матриц.


[1] Analysis of Recursive State Machines / Rajeev Alur, Michael Benedikt, Kousha Etessami et al. // ACM Trans. Program. Lang. Syst. — 2005.— Vol. 27, no. 4.— P. 786-818.— URL: https://doi.org/10. 1145/1075382.1075387.
[2] Azimov Rustam, Grigorev Semyon. Context-Free Path Querying by Matrix Multiplication // Proceedings of the 1st ACM SIGMOD Joint International Workshop on Graph Data Management Experi­ences & Systems (GRADES) and Network Data Analytics (NDA).— GRADES-NDA ’18.-- New York, NY, USA : Association for Com­puting Machinery, 2018. -- 10 p. -- URL: https://doi.org/10.1145/ 3210259.3210264 (online; accessed: 10.10.2021).
[3] Context-Free Path Querying by Kronecker Product / Egor Orachev, Ilya Epelbaum, Rustam Azimov, Semyon Grigorev // Advances in Databases and Information Systems / Ed. by Jerome Darmont, Boris Novikov, Robert Wrembel. -- Cham : Springer International Publishing, 2020. — P. 49-59.
[4] Evaluation of the Context-Free Path Querying Algorithm Based on Matrix Multiplication / Nikita Mishin, Iaroslav Sokolov, Egor Spirin et al. // Proceedings of the 2nd Joint International Workshop on Graph Data Management Experiences & Systems (GRADES) and Network Data Analytics (NDA). - GRADES-NDA’19. - New York, NY, USA : Association for Computing Machinery, 2019. — 5 p. — URL: https:// doi.org/10.1145/3327964.3328503 (online; accessed: 10.10.2021).
[5] Faults in Linux: Ten Years Later / Nicolas Palix, Ga6l Thomas, Suman Saha et al. // Proceedings of the Sixteenth International Con­ference on Architectural Support for Programming Languages and Op­erating Systems. — ASPLOS XVI. — New York, NY, USA : Association for Computing Machinery, 2011. — P. 305-318. — URL: https://doi. org/10.1145/1950365.1950401 (online; accessed: 10.10.2021).
[6] Hellings Jelle. Querying for Paths in Graphs using Context-Free Path Queries. — 2016. — 1502.02242.
[7] Hopcroft John E., Motwani Rajeev, Ullman Jeffrey D. Introduc­tion to Automata Theory, Languages, and Computation (3rd Edi­tion). — USA : Addison-Wesley Longman Publishing Co., Inc., 2006. — ISBN: 0321455363.
[8] Medeiros Ciro M., Musicante Martin A., Costa Umberto S. An Al­gorithm for Context-Free Path Queries over Graph Databases // Proceedings of the 24th Brazilian Symposium on Context-Oriented Programming and Advanced Modularity. — SBLP ’20. — New York, NY, USA : Association for Computing Machinery, 2020. — P. 40­47.— URL: https://doi.org/10.1145/3427081.3427087 (online; accessed: 10.10.2021).
[9] Shemetova Ekaterina, Azimov Rustam, Orachev Egor et al. One Algo­rithm to Evaluate Them All: Unified Linear Algebra Based Approach to Evaluate Both Regular and Context-Free Path Queries. — 2021.— 2103.14688.
[10] Reps Thomas. Program analysis via graph reachability1An abbre­viated version of this paper appeared as an invited paper in the Proceedings of the 1997 International Symposium on Logic Pro­gramming [84].1 // Information and Software Technology.— 1998.— Vol. 40, no. 11. — P. 701-726. — URL: https://www.sciencedirect. com/science/article/pii/S0950584998000937 (online; accessed: 10.10.2021).
[11] Reps Thomas, Horwitz Susan, Sagiv Mooly. Precise Interprocedural Dataflow Analysis via Graph Reachability // Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. - POPL ’95. - New York, NY, USA : Association for Computing Machinery, 1995.— P. 49-61.— URL: https://doi.org/ 10.1145/199448.199462 (online; accessed: 10.10.2021).
[12] Sagiv Mooly, Reps Thomas, Horwitz Susan. Precise interprocedural dataflow analysis with applications to constant propagation // The­oretical Computer Science.— 1996.— Vol. 167, no. 1.— P. 131— 170.— URL: https://www.sciencedirect.com/science/article/ pii/0304397596000722 (online; accessed: 10.10.2021).
[13] Sevon Petteri, Eronen Lauri. Subgraph Queries by Context- free Grammars // Journal of Integrative Bioinformatics. — 2008. — Vol. 5, no. 2.- P. 157-172.- URL: https://doi.org/10.1515/ jib-2008-100 (online; accessed: 10.10.2021).
[14] Sridharan Manu, Bodik Rastislav. Refinement-Based Context­Sensitive Points-to Analysis for Java // Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Imple­mentation. — PLDI ’06. — New York, NY, USA : Association for Com­puting Machinery, 2006. -- P. 387-400. -- URL: https://doi.org/ 10.1145/1133981.1134027 (online; accessed: 10.10.2021).
[15] Zheng Xin, Rugina Radu. Demand-Driven Alias Analysis for C // SIGPLAN Not.- 2008.-1.- Vol. 43, no. 1.- P. 197­208.— URL: https://doi.org/10.1145/1328897.1328464 (online; accessed: 10.10.2021).


Работу высылаем на протяжении 30 минут после оплаты.




©2024 Cервис помощи студентам в выполнении работ