Алгоритмы оценки дефектности исходного кода

Номинация:
Технологическое обеспечение. Новый уровень

Описание проекта:
При создании компьютерных программ мы обычно используем более или менее похожие алгоритмические блоки. Мы сортируем списки, ищем объекты, отправляя и получая сообщения внутри программы, и вне ее. Объединение этих и других универсальных блоков позволяет создавать сложное программное обеспечение с уникальными характеристиками.
Мы предлагаем прогнозировать дефектность программного обеспечения, анализируя правдоподобность этих строительных блоков.
Область данного исследования включает в себя разработку теории и алгоритмов добычи таких блоков, разработку процедуры оценки общей дефектности программы на основе характеристик найденных блоков кода. В этом исследовании мы используем современные методы машинного обучения и открытые репозитории в качестве тренировочного корпуса.
Для задач обучения и тонкой настройки предсказательных моделей собран набор данных PyTraceBugs, содержащий автоматически размеченный исходный код на языке Python из активных репозиториев GitHub реальных программных продуктов. Ошибочный код (24 тыс. фрагментов) собран путем анализа сообщений об ошибках и соответствующих коммитов с исправлениями. Корректный код (5.7 млн фрагментов) собран из стабильного кода (не менявшегося долгое время до текущего состояния репозитория).

Результаты:
1. Проанализированы новейшие работы по данной теме, перечислены наиболее популярные методы автоматического изучения семантических и структурных особенностей кода, выделены открытые проблемы и последние тенденции в данной области.
2. Построен датасет PyTraceBugs, содержащий размеченный исходный код на языке Python. Он предназначен для обучения с учителем, валидации и оценки сложных моделей глубокого обучения для предсказания дефектов. Датасет использован для обучения модели предсказания дефектности исходного кода. Получены следующие результаты для тестовой выборки: точность определения дефектного кода - 96%, полнота - 34%.
3. Предложен новый семантический подход для оценки аномальности исходного кода. Индекс аномальности вычисляется на основе модели, обученной без учителя на корпусе кода. Чем больше значение индекса, тем более нетипичен фрагмент кода. На основе данного подхода реализован прототип программного обеспечения, реализующий оценку дефектности исходного кода. Приложение может быть интегрировано с GitHub Actions.

Внедрение:
Результаты проекта доступны в открытых репозиториях: https://github.com/acheshkov/pytracebugs https://github.com/acheshkov/pytracebugs_pipeline
Результаты исследований опубликованы в международных изданиях, индексируемых в РИНЦ, Scopus, Web of Science.

Команда проекта:
Институт математики и механики им. Н.Н. Красовского УрО РАН
Елена Николаевна Акимова (Руководитель проекта)
Антон Владимирович Коныгин (Ответственный исполнитель)
Константин Сергеевич Кобылкин (Исследование методов машинного обучения)
Владимир Евгеньевич Мисилов (Исследование методов машинного обучения)
Александр Юрьевич Берсенев (Исследование методов машинного обучения)

Контакты:
aen15@yandex.ru

Номинация: Технологическое обеспечение. Новый уровень

Год: 2023

Результат: Перспективный проект