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


Детектор аномалий в программах на языке Kotlin

Работа №131404

Тип работы

Бакалаврская работа

Предмет

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

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

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


Введение 4
1. Обзор 6
1.1. Методы векторизации исходного кода 6
1.2. Поиск аномалий 8
1.3. GitHub как источник данных 9
1.4. PSI как средство анализа кода на Kotlin 10
2. Архитектура системы 12
2.1. Сборщик репозиториев 12
2.2. Модуль векторизации 13
2.3. Модуль анализа 14
2.4. Модуль постобработки 14
3. Векторизация исходного кода на Kotlin 15
4. Поиск выбросов 19
5. Апробация 21
5.1. Метод 21
5.2. Локальные эксперименты 21
5.3. Экспертная оценка 22
5.4. Сравнение с аналогичной работой 23
5.5. Вывод 24
Заключение 26
Список литературы 27

В настоящее время индустрия программного обеспечения активно развивается. Так, согласно отчёту компании CodeDx, ежегодно созда­ётся более 111 миллиардов строк исходного кода [1]. В связи с этим естественным образом встаёт проблема контроля правильности рабо­ты программного кода, его безопасности и быстродействия. При этом важно отслеживать качество как исходного кода, так и используемого транслятора, потому что дефекты последнего могут негативно влиять на конечный программный продукт.
Одним из новых и динамично развивающихся языков программиро­вания является язык Kotlin1, разработанный компанией JetBrains. Это высокоуровневый язык программирования общего назначения, приме­няемый для разработки на платформах Java Virtual Machine (JVM), Android и некоторые другие. Разработчики языка Kotlin заинтересова­ны в улучшении экосистемы языка, в том числе компилятора. По их мнению, для этих целей могут быть полезны примеры необычного ко­да на Kotlin, выделяющегося своей нестандартной структурой — так называемые кодовые аномалии.
Под кодовой аномалией в данной работе понимается фрагмент ис­ходного кода, по тем или иным причинам нетипичный для Kotlin. Это не означает, что такой код содержит ошибки или компилятор обраба­тывает его некорректно; кодовая аномалия вполне может быть синтак­сически и семантически корректна. Аномальность заключается лишь в том, что подавляющее большинство разработчиков не пишут код та­ким образом. Кодовые аномалии могут возникать по разным причинам: необычный подход отдельного программиста, предыдущий опыт раз­работки на другом, непохожем языке или в рамках другой парадигмы программирования.
Кодовые аномалии могут быть полезны разработчикам языка Kotlin по следующим соображениям. Во-первых, некоторые аномалии как при­меры нетипичного, но формально корректного кода могут обратить внимание разработчика языка на отдельные аспекты работы компиля­тора и вскрыть какие-либо неучтённые случаи. Во-вторых, некоторые кодовые аномалии могут служить тестами производительности компи­лятора и других языковых инструментов. В-третьих, анализ кодовых аномалий может привести к выводу о необходимости изменения или дополнения самого языка программирования. Всё это способствует раз­витию языка и его экосистемы.
Таким образом, имеется актуальная задача поиска кодовых анома­лий на языке Kotlin. Её решением мог бы стать программный инстру­мент, позволяющий выявлять кодовые аномалии в базе открытого ис­ходного кода на Kotlin и формировать наглядные отчёты. Созданию такого инструмента и посвящена настоящая работа.
Постановка задачи
Целью данной работы является создание системы поиска кодовых аномалий на языке Kotlin. Для достижения этой цели были сформулированы следующие задачи:
1. провести обзор предметной области;
2. выполнить проектирование системы поиска кодовых аномалий, выбрать подходящие для этой задачи алгоритмы;
3. реализовать требуемую систему;
4. провести апробацию реализованной системы и предоставить отчёт разработчикам языка программирования Kotlin.

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

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

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


В ходе данной работы были получены следующие результаты.
• Создана архитектура системы для поиска и анализа кодовых ано­малий на языке Kotlin.
• Реализована система поиска кодовых аномалий, в том числе сле­дующие компоненты:
- модуль векторизации исходного кода;
- модуль поиска выбросов в векторизованных данных.
Исходный код опубликован на портале GitHub1; автор работал под учётной записью ksmirenko.
• Проведена апробация системы на 47 751 проектах на Kotlin с GitHub; отчёт c наиболее интересными аномалиями предоставлен разработчикам Kotlin.
Из полученных результатов можно сделать вывод о том, что выбран­ный подход можно с успехом применять для поиска кодовых аномалий на языке Kotlin. В текущем виде подход требует существенного челове­ческого вмешательства на этапе анализа и отбора потенциальных ано­малий. Следовательно, дальнейшие исследования в этой области могут быть направлены на повышение полезности обнаруживаемых аномалий посредством улучшения процесса векторизации (добавление метрик ли­бо использование других подходов), тюнинга или смены используемых методов машинного обучения.


[1] 111 Billion Lines of New Software Code Will Need to be Secured in 2017.— URL: https://codedx.com/2017/01/23/ 111-billion-lines-new-software-code-will-need-secured-2017/ (online; accessed: 26.01.2018).
[2] Building Program Vector Representations for Deep Learning / Lili Mou, Ge Li, Yuxuan Liu et al. // CoRR. — 2014. — Vol. abs/1409.3358. — 1409.3358.
[3] Chandola Varun, Banerjee Arindam, Kumar Vipin. Anomaly Detection: A Survey // ACM Comput. Surv. — 2009.-07. — Vol. 41, no. 3.— P. 15:1-15:58.— URL: http://doi.acm.org/10.1145/ 1541880.1541882.
[4] Chilowicz M., Duris E., Roussel G. Syntax tree fingerprinting for source code similarity detection // 2009 IEEE 17th International Conference on Program Comprehension. — 2009. — 05. — P. 243-247.
[5] De-anonymizing Programmers via Code Stylometry / Aylin Caliskan- Islam, Richard Harang, Andrew Liu et al. // Proceedings of the 24th USENIX Conference on Security Symposium.— SEC’15.— Berkeley, CA, USA : USENIX Association, 2015.— P. 255-270.— URL: http: //dl.acm.org/citation.cfm?id=2831143.2831160.
[6] Estimating the Support of a High-Dimensional Distribution / Bernhard Scholkopf, John C. Platt, John C. Shawe-Taylor et al. // Neural Comput.— 2001. — 07.— Vol. 13, no. 7.— P. 1443-1471.— URL: https://doi.org/10.1162/089976601750264965.
[7] Gousios Georgios. The GHTorrent dataset and tool suite // Proceedings of the 10th Working Conference on Mining Software Repositories.— MSR ’13.— 2013. —05.— P. 233-236.— Best data showcase paper award. URL: /pub/ghtorrent-dataset-toolsuite. pdf.
[8] Hodge V.J., Austin J. A survey of outlier detection methodologies // Artificial Intelligence Review. — 2004. — October. — P. 85-126. — URL: http://eprints.whiterose.ac.uk/767/.
[9] Jolliffe I.T. Principal Component Analysis. Springer Series in Statistics. — Springer, 2002. — ISBN: 9780387954424. — URL: https: //books.google.de/books?id=_olByCrhjwIC.
[10] Kotlin 1.2 Released // Kotlin Blog.— URL: https://blog. jetbrains.com/kotlin/2017/11/kotlin-1-2-released/ (online; accessed: 26.01.2018).
[11] LOF: identifying density-based local outliers / Markus M Breunig, Hans-Peter Kriegel, Raymond T Ng, Jorg Sander // ACM sigmod record / ACM. — Vol. 29. — 2000. — P. 93-104.
[12] Liu F. T., Ting K. M., Zhou Z. H. Isolation Forest // 2008 Eighth IEEE International Conference on Data Mining. — 2008. — 08. — P. 413-422.
[13] Liu Fei Tony, Ting Kai Ming, Zhou Zhi-Hua. Isolation-Based Anomaly Detection // ACM Trans. Knowl. Discov. Data.— 2012. — 03.— Vol. 6, no. 1.— P. 3:1-3:39.— URL: http://doi.acm.org/10.1145/ 2133360.2133363.
[14] Milepost GCC: Machine Learning Enabled Self-tuning Compiler / Grigori Fursin, Yuriy Kashnikov, Abdul Wahid Memon et al. // International Journal of Parallel Programming.— 2011. — Jun.— Vol. 39, no. 3. -- P. 296-327. -- URL: https://doi.org/10.1007/ s10766-010-0161-2.
[15] PSI Files // IntelliJ Platform SDK Developer Guide. -- URL: http://www.jetbrains.org/intellij/sdk/docs/basics/ architectural_overview/psi_files.html (online; accessed: 01.04.2018).
...


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




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