Анализ правки кода программы — комплексная задача. В любой момент разработчик может взять базу исходных кодов и внести изменения с той или иной целью. Закономерности редактирования невозможно осмыслить только в терминах содержания правок (что было удалено или добавлено) или результата редактирования (состояние кода после внесения изменений). Надо также понимать, как правка меняет нынешнее состояние. Аккуратное моделирование последовательности правок требует представления прошлых изменений, которые позволяют модели сделать обобщение и предсказать будущие правки, говорится в статье, опубликованной на сайте Arxiv.org.
Для этого специалисты Google разработали сначала два представления, чтобы фиксировать информацию о намерении: представление в явной форме, которое иллюстрирует последовательные правки, и в неявной форме, для последующих правок. Затем они создали модель машинного обучения, которая может понять отношения правок и контекста, в котором были сделаны, скомпоновать контекст и предсказать следующие правки и их положение, пишет VentureBeat.
Чтобы измерить способность системы к обобщению, исследователи разработали набор искусственных данных. Их упростили по сравнению с реальными, чтобы можно было точнее интерпретировать результаты. Кроме того, ученые скомпилировали большой набор данных из базы Google, в которой содержится 8 млн правок, внесенных 5700 программистами, и разбили их на группы.
Проведя испытание, ученые обнаружили, что модель способна надежно и точно прогнозировать место требуемой правки, а также ее содержание.
«Мы особенно заинтересованы в условиях, когда модели делают прогнозы, только если уверены. Это было бы важно для практичности системы рекомендации правок, — пишут авторы. — Есть множество действий разработчиков, которые хотелось бы предсказать. Мы считаем, что истории правок содержат очень полезную информацию, а методика и предложенные в нашей работе модели — хорошая точка старта для того, чтобы научиться пользоваться этой информацией».
Алгоритм, умеющий анализировать будущие приложения и дающий советы по оптимизации кода, разработали в США. ИИ DiffProf автоматически определяет, что следует улучшить и как это сделать.