[2/3] Resolving Code Review Comments with Machine Learning (Рубрика AI)
Продолжая рассказ про whitepaper от Google опишу чуть подробнее эволюция системы V1) Начиналось все с генерации suggests изменений после отправки комментариев код ревьюверами V2) Инструмент развился до предложения изменений кода ревьюверам во время написания комментариев V2 + IDE integration) На основе обратной связи пользователей команда внедрила лучшую интеграцию с IDE, включая просмотр конфликтующих изменений (3-way-merges)
В итоге, текущий процесс работы этой фичи и воронку
- Ревьювер пишет коммент - на лету моделька генерирует код для фикса
- Ревьювер может принять этот код или нет, если принимает, то дальше автору MR прилетает комментарий с этим auto suggest, если отклоняет, то просто комментарий
- Дальше автор кода при ревью может жмякнуть кнопку автопринятия
Цель всей работы и метрика для оптимизации была сформулирована так
A primary goal for any assistance tool is to increase productivity. One metric we use to gauge the positive impact of our assistant on productivity is acceptance rate, the fraction of all code-review comments that are resolved by the assistant; this measures, out of all (non-automated) comments left by human reviewers, what fraction received an ML-suggested edit that the author accepted and applied directly to their changelist.
Стата по каждому этапу выглядит сильно интереснее, чем просто 7.5% автоприемов suggest от всех комментариев.
Stage -- (%) of total -- (%) of previous step Incoming comments -- 100.0% -- 100.0% Confident predictions -- 49.0% -- 49.0% Accepted by reviewer -- 33.1% -- 63.6% Previewed by authora -- 10.7% -- 34.5% Applied by author -- 7.5% -- 69.5%
Ну и шаг превью в этой стате не так значим как в первом варианте того, как они сделали эту фичу, там под табличкой такая аннотация идет
The concept of author preview is less significant in V2. The author automatically sees a small preview and can “click-to-view” full suggested edits. This full view either shows the “Apply“ button or informs about an edit that requires a three-way merge. Almost all not-applied previews in V2 denote an edit that required a three-way merge to be applied.
Качественный фидбек по этой фиче звучал так
Early feedback about the assistant in internal message boards is enthusiastic, including characterizations such as “sorcery!”, “magic!”, “impressive”. Although the new version V2, in which suggested edits are presented as the reviewer is typing a comment, has only been deployed to 100% of the population for a relatively limited time, we have received delighted reports demonstrating that just the location and the initial sentiment of the reviewer’s comment can lead to helpful suggested edits, for both parties involved.
Помимо результатов авторы статьи описали как они тюнили качество системы через тюнинг модели и тюнинг данных - Model tuning включал: fine-tuning DIDACTR модели, size tuning количества параметров в модели, уменьшение precision, тюнинг hyperparameters, тюнинг под языки программирования и финально preview для ревьюверов, что позволило еще нише сделать отсечку по precision - Data tuning включал: оффлайн датасет для оценки ограничили только single comment изменениях, тренировка на "done" комментариях, тренировка на синтетических задачках
В общем, получился интересный whitepaper с описанием подхода ребят в Google и интересными практическими результатами. В последнем посте прилинкованы интересные картинки из этой статьи.
#Software #AI #Engineering #Process #DevEx