В своем блоге Facebook рассказал о принципе работы Getafix. Программа создана для автоматического исправления кода.
Принцип работы заключается в исправлении багов, найденных анализатором Infer, также созданным Facebook. Инструмент предлагает правки для ошибок, обнаруженных системой тестирования приложений.
Принцип работы
Инструмент создан для того, чтобы инженеры тратили меньше времени на поиск ошибок в коде. Но если Getafix обнаружит проблему, решение за исправлением бага все равно остается за программистом. Нейронная сеть учится на правках, внесенных инженером ранее, и сверяет их с контекстом фрагмента кода. Затем предлагает пути исправления ошибки.
Схема работы Getafix
Программа создана специально для Facebook, но способна работать с любым сервисом или приложением. Это позволит распространить его на другие свои службы, в частности и на VR-подразделение компании.
Отличие от аналогов
Аналоги Getafix могут решать лишь базовые задачи и совсем не опираются на контекст. Инструмент Facebook способен в одной ситуации предложить разные пути решения. Это необходимо, когда требуется нерутинный способ решения проблемы, позволяющий сделать код более удобным и менее громоздким.
Пример работы Getafix с кодом
Что на практике?
Facebook проверил систему в условиях исправления 200 багов и сравнил результат ее работы с работой человека. Только четверть решений совпала с решением программиста.
Еще одна проверка с 2 тысячами багов на исправление метода нулевого указателя показала, что 53% всех багов ИИ смог обнаружить и исправить сразу.
У Facebook уже есть похожий инструмент на основе ИИ для генерирования и внедрения патчей Sapfix. ПО ищет ошибки в коде и самостоятельно генерирует и предлагает патчи для исправления неточностей. Если патч не подойдет, нейросеть будет подбирать варианты до тех пор, пока код не заработает. Решение может работать как «самостоятельно», так и в сочетании с умным тестировочным ПО Sapienz, предназначенным для поиска ошибок в коде.