Тема: Детектор аномалий в программах на языке Kotlin
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
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
📖 Введение
Одним из новых и динамично развивающихся языков программирования является язык 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. В текущем виде подход требует существенного человеческого вмешательства на этапе анализа и отбора потенциальных аномалий. Следовательно, дальнейшие исследования в этой области могут быть направлены на повышение полезности обнаруживаемых аномалий посредством улучшения процесса векторизации (добавление метрик либо использование других подходов), тюнинга или смены используемых методов машинного обучения.





