Тема: Автоматическое исправление ошибок в программном коде
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Постановка задачи 5
1. Обзор предметной области 6
1.1. Основные подходы автоматического исправления ошибок
в программном коде 6
1.2. Алгоритм работы инструмента Prophet 7
2. Поддержка исправления новых классов ошибок 11
2.1. Анализ тестового набора данных 11
2.2. Реализация исправления новых классов
ошибок 12
3. Расширенная модель корректного кода 15
3.1. Новые признаки и их извлечение 15
3.2. Обучение модели 15
4. Апробация 18
4.1. Схема эксперимента 18
4.2. Анализ результатов 18
4.3. Анализ признаков новой модели корректного кода .... 19
Заключение 24
Список литературы 25
📖 Введение
в программном коде, бурно развиваются. Всё это связано с тем, что
процесс поиска и исправления ошибок является не только утомительным и трудоемким, но и очень часто повторяющимся процессом. Чтобы
исправить ошибку, разработчику необходимо: проанализировать отчёт
об ошибке, понять проблему, локализовать дефект, выполнить исправление и проверить новый код на регрессионных тестах – что является
нетривиальной задачей.
Можно выделить основные направления в области автоматического
исправления ошибок:
– исправляющие определенный класс ошибок;
– использующие символьное исполнение;
– системы генерации и валидации исправлений (generate-and-validate
systems).
Многие эти системы имеют проблему масштабируемости: инструменты, хорошо работающие на маленьких примерах, плохо работают
на реальных больших проектах (около 100 тыс. строк кода). Одним из
немногих инструментов, решающих данную проблему, является Prophet[10].
Prophet – инструмент, исправляющий ошибки в программном коде посредством генерации, ранжирования и проверки упорядоченных
исправлений на тестовом наборе данных. Prophet умеет исправлять
шесть классов ошибок, которые исправляются путем изменения одного
места программы. Например, классы ошибок, исправляемые добавлением условия перед утверждением или заменой утверждения. Данное
множество не является полным, поэтому данная работа направлена на
расширение набора ошибок, исправляемых Prophet.
✅ Заключение
– Реализована генерация исправлений для новых классов ошибок,
исправляемых вынесением первого утверждения функции перед
вызывающим кодом.
– Расширена и обучена новая модель корректного кода посредством
добавления новых признаков для поддержки исправлений, изменяющих код в 2 местах программы, и добавления новых примеров
в тренировочный набор данных.
– Выявлены самые значимые признаки успешных исправлений и
проведен анализ влияния новых тренировочных примеров на параметры модели корректного кода.
В результате было расширено пространство генерируемых исправлений в инструменте Prophet[10] и исправлена ошибка из тестового набора данных. Исходный код данной работы представлен в репозитории
проекта[22].



