Microsoft разрабатывает инструмент для восстановления кода


Исследователи из Microsoft, Пекинского университета и Университета электронных наук и технологий Китая разработали систему, которая автоматически устраняет дефекты в программных системах без вмешательства человека.

Microsoft

Исследование является продолжением исследования Microsoft и Кембриджского университета, которые, как мы недавно сообщали, анонсировали алгоритм DeepCoder, который создает программы из проблемных входов/выходов.

DeepCoder все еще очень ограничен, но новое исследование ставит вопрос о том, сможет ли компьютерная программа выявлять и исправлять ошибки в существующих программах.

Система, изобретенная Accurate Condition System (ACS), предназначена для автоматического исправления дефектов в программных системах без вмешательства человека.

Хотя существуют автоматизированные инструменты для восстановления программ, производимые ими исправления имеют низкий уровень «точности». Для большинства точность основных подходов к исправлению программ составляет менее 10 процентов, а даже улучшенные подходы достигают точности менее 40 процентов. Проблема в том, что тесты, используемые для пометки изменения как «правильное», не означают, что прохождение теста означает, что программа действительно верна.

Этот последний подход обеспечивает 80-процентную «правильность» в тесте Defects4J, который часто используется для измерения таких вещей.

ACS достигает улучшенных результатов за счет использования нескольких источников информации, особенно «большого кода», существующего в Интернете. Исследователи сосредоточились на синтезе состояний. К источникам в предыдущих инструментах были добавлены три новых типа источников информации. Во-первых, информация, предоставляемая путем знания того, какие переменные в локальном контексте должны использоваться в условии «если», и с использованием метода сортировки, основанного на отношениях зависимости между переменными.

Второе изменение основано на наблюдении, что документ API может использоваться для руководства процессом восстановления. Метод анализа документов был использован для дальнейшей фильтрации переменных на основе этого. Для анализа документации Javadoc используются методы анализа естественного языка, а затем приложение использует информацию в документации Javadoc для фильтрации неправильных исправлений.

Наконец, что наиболее важно, ACS выполняет статистический анализ программы с открытым исходным кодом в Интернете, обнаруживает условные вероятности операций над переменными и затем генерирует правильные исправления.

Документ с описанием системы ACS «Точный синтез условий для восстановления программ» был опубликован на ICSE 2017. Среди авторов — Инфэй Сюн, Цзе Ван, Гуан Хуанг и Лу Чжан из Пекинского университета, Рунфа Ян из UESTC и Ши Хан из Microsoft Research Asia.


Добавить комментарий