Привет!
Меня зовут Никита Соболев. Я занимаюсь опенсорс разработкой полный рабочий день.
Тут я рассказываю про #python, #c, #opensource и тд.
Поддержать: https://boosty.to/sobolevn
РКН: https://vk.cc/cOzn36
Связь: @sobolev_nikita
Post #927
18.2K

Используем ИИ для ревью кода
Сейчас довольно много говорят про написание кода при помощи ИИ, но меньше говорят про другой тип агентов (который лично мне нравится больше): ревью и анализ кода.
Ребята из GitVerse не так давно выпустили данную фичу, она доступна для всех. Я воспользовался возможностью и потестил.
Документация: https://gitverse.ru/docs/ai-agents/gigacode-agent
Методология проверки
Полный репозиторий: https://gitverse.ru/sobolevn/ai-code-review
Я придумал много разных типов ошибок и написал специально 🌚 плохой код на питоне. Вот он: https://gitverse.ru/sobolevn/ai-code-review/content/master/ai_code_review/example.py
- Небезопасный Python код:
- Плохое имя переменной:
- Сложный Python код в функции
- Затирание встроенного в Python имени:
- Использование
- Неправильная аннотация типа данных:
- Логическая ошибка:
- Использование несуществующей переменной:
- Плохо отформатированный Python код:
- Некорректный порядок импортов:
- Небезопасная и устаревшая зависимость
Далее, я проверил, можно ли вообще статически найти ошибки, которые я заложил?
Я сделал GitVerse Actions файл, который запускает
И удостоверился, что они могут найти все ошибки, кроме одной проблемы из двух самых сложных во всем программировании:
- Плохое имя переменной:
Данная ошибка будет baseline для нашего ИИ.
Ревью при помощи ИИ
Чтобы ревью случилось, нужно просто добавить
Что он делает?
1. Делает описание PR, если его нет. Там кратко перечисляет тип PR, ключевые изменения, важные технические детали. Удобно! Часто такие PRы просто раньше были пустые
2. Делает ревью. Описывает найденные проблемы. Учитывает тесты, которые отвечают за изменения. Действительно находит многие проблемы. От типизации до оформления. В текстах
3. Делает советы по изменениям. Пока они оставляют желать лучшего. Но изменения по форматированию - я бы принял, остальные - нет
4. Можно уточнять что-то при помощи команды
Итог: найдено 6 (или 3 в зависимости от способа запуска) ошибок. Что уважаемо, учитывая, что было 0 конфигурации, 0 интеграций. Надеюсь, дальше будет еще лучше :)
Наша baseline ошибка, кстати, была найдена, когда я явно задал контекст.
Вывод: используйте ИИ ревью вместе с другими инструментами статического анализа.
Полный отчет со всеми подробностями по ссылке.
Обсуждение: доверили бы вы ревьюить свой код ИИ?
Сейчас довольно много говорят про написание кода при помощи ИИ, но меньше говорят про другой тип агентов (который лично мне нравится больше): ревью и анализ кода.
Ребята из GitVerse не так давно выпустили данную фичу, она доступна для всех. Я воспользовался возможностью и потестил.
Документация: https://gitverse.ru/docs/ai-agents/gigacode-agent
Методология проверки
Полный репозиторий: https://gitverse.ru/sobolevn/ai-code-review
Я придумал много разных типов ошибок и написал специально 🌚 плохой код на питоне. Вот он: https://gitverse.ru/sobolevn/ai-code-review/content/master/ai_code_review/example.py
- Небезопасный Python код:
subprocess.run([user_input, ...])- Плохое имя переменной:
moy_lubimiy_film = '{"album_id": 1, "next_song": 2}'- Сложный Python код в функции
complex_code- Затирание встроенного в Python имени:
input- Использование
Any без явной причины: input: Any- Неправильная аннотация типа данных:
x: int = 'a'- Логическая ошибка:
if subvalue in seen- Использование несуществующей переменной:
missing_var- Плохо отформатированный Python код:
my_unformatted_list- Некорректный порядок импортов:
from typing import Any- Небезопасная и устаревшая зависимость
django@1.9 в pyproject.tomlДалее, я проверил, можно ли вообще статически найти ошибки, которые я заложил?
Я сделал GitVerse Actions файл, который запускает
mypy, wemake-python-styleguide, ruff, safety.И удостоверился, что они могут найти все ошибки, кроме одной проблемы из двух самых сложных во всем программировании:
- Плохое имя переменной:
moy_lubimiy_film = '{"album_id": 1, "next_song": 2}'Данная ошибка будет baseline для нашего ИИ.
Ревью при помощи ИИ
Чтобы ревью случилось, нужно просто добавить
giga-code-agent в качестве ревьюера. Что он делает?
1. Делает описание PR, если его нет. Там кратко перечисляет тип PR, ключевые изменения, важные технические детали. Удобно! Часто такие PRы просто раньше были пустые
2. Делает ревью. Описывает найденные проблемы. Учитывает тесты, которые отвечают за изменения. Действительно находит многие проблемы. От типизации до оформления. В текстах
README.md нашел несколько ошибок. Но! Очень важно: находит не все ошибки3. Делает советы по изменениям. Пока они оставляют желать лучшего. Но изменения по форматированию - я бы принял, остальные - нет
4. Можно уточнять что-то при помощи команды
/askИтог: найдено 6 (или 3 в зависимости от способа запуска) ошибок. Что уважаемо, учитывая, что было 0 конфигурации, 0 интеграций. Надеюсь, дальше будет еще лучше :)
Наша baseline ошибка, кстати, была найдена, когда я явно задал контекст.
Вывод: используйте ИИ ревью вместе с другими инструментами статического анализа.
Полный отчет со всеми подробностями по ссылке.
Обсуждение: доверили бы вы ревьюить свой код ИИ?
- 👍 80
- 🤡 49
- ❤ 21
- 🔥 15
- 🤔 5
- 💩 4
- 😁 3
- 🕊 2
- 🤯 1

