26.04.2024 16:48
Google навчив модель машинного навчання DIDACT передбачати виправлення у коді
Дослідники GoogleAI представили DIDACT (Dynamic Integrated Developer ACTivity), щоб покращити досвід розробників у виправленні помилок у збірці, зокрема, зосередившись на Java розробці. Процес розробки програмного забезпечення містить ітеративні кроки, такі як редагування, модульне тестування та перегляд коду, при цьому помилки у збірці є поширеною і трудомісткою проблемою. DIDACT ML має на меті автоматизувати виявлення та усунення помилок збірки за допомогою моделей машинного навчання, навчених на попередніх даних про зміни коду розробників та протоколах збірки.
Ключовою концепцією DIDACT ML є використання сеансів розв’язання, які фіксують еволюцію коду від виникнення помилки збірки до її розв’язання. Аналізуючи ці послідовності, DIDACT ML може прогнозувати патчі для виправлення помилок збірки на основі стану коду на момент виникнення помилки та подальших виправлень. Ці запропоновані виправлення потім представляються розробникам в режимі реального часу в їх інтегрованому середовищі розробки (IDE), що дозволяє негайно вжити заходів і скоротити час налагодження.
Модель DIDACT ML навчається на повному наборі даних сеансів розв’язання, що охоплює різні типи помилок збірки та їх відповідні виправлення. Під час виведення модель використовує поточний стан коду та виявлені помилки збірки як вхідні дані й генерує патч з оцінкою певності як пропоноване виправлення. Етапи постобробки забезпечують якість і безпеку запропонованих рішень, включаючи автоматичне форматування та евристичні фільтри.
Результати експериментів, проведених за допомогою DIDACT ML, демонструють статистично значуще підвищення продуктивності, включаючи скорочення часу активного кодування і часу на супровід одного списку змін, а також збільшення пропускної здатності. Важливо, що дослідження не виявило помітного збільшення ризиків безпеки або помилок при використанні ML-виправлень, що підкреслює ефективність і безпеку цього підходу.
Підсумовуючи, DIDACT ML пропонує переконливе рішення для покращення досвіду розробників щодо виправлення помилок у збірках, використовуючи автоматизоване виправлення на основі машинного навчання. Надаючи пропозиції в режимі реального часу в середовищі розробки, програмісти можуть ефективніше виправляти помилки збірки, що призводить до підвищення продуктивності та задоволеності розробників. Такий підхід зменшує трудомісткість роботи розробників і дає їм більше часу для творчого вирішення завдань при розробці програмного забезпечення.