Экспертиза

Как ИИ помогает в процессе код ревьюнга

Этой статьей мы начинаем новую рубрику с говорящим названием – “сложно о сложном”. Статьи в ней написаны IT-специалистами для IT-специалистов (ну или для тех, кто хочет все знать). Автор премьерного материала – Нуржан Ногербек, Lead Software Engineer в британской ритейл компании River Island.

Что такое код ревью, и зачем он нужен

В современной разработке программного обеспечения, код ревью – не просто этап проверки кода на ошибки – это краеугольный камень создания качественного и надежного продукта.

Код ревью – детальный процесс, в котором разработчики анализируют чужой код перед его интеграцией в основную кодовую базу, чтобы обнаружить ошибки, обеспечить соответствие единому стилю программирования, улучшить качество кода и способствовать обмену знаниями внутри команды.

Код ревью также позволяет идентифицировать потенциальные уязвимости и проблемы безопасности, предотвращая их появление в финальной версии продукта.

У процесса есть ряд проблем, которые затрудняют его эффективность. Их понимание и исследование способов их устранения – основа для общего повышения качества кодирования.

Основные проблемы и вызовы в код ревьюинге

  1. Время и ресурсы
  • Затраты времени: процесс может занимать значительное количество времени у разработчиков, что влияет на сроки выполнения проекта.
  • Недостаток ресурсов: В небольших командах или при высокой загруженности специалистов, у сотрудников может просто напросто не хватать времени на тщательное исследование.
  1. Качество
  • Непоследовательность: Разные рецензенты могут сосредоточиться на разных аспектах кода, пропуская важные моменты.
  • Поверхностность: Иногда код ревью проводится формально, без глубокого анализа и конструктивной критики.
  1. Коммуникация и сотрудничество
  • Недопонимание: Комментарии в код ревью могут быть интерпретированы как критика, что порождает конфликты.
  • Отсутствие обратной связи: Разработчики иногда не получают достаточно информации для улучшения своего кода.
  1. Технические ограничения
  • Отсутствие инструментов: Нехватка или неэффективность инструментов код ревью может затруднять процесс.
  • Сложность интеграции: Проблемы с интеграцией инструментов в существующие рабочие процессы.

Как решать такие проблемы?

Проблема

Решение

Время и ресурсы

Внедрение автоматизированных ИИ инструментов для первичного анализа кода приводит к экономии времени и повышению эффективности работы.

Качество ревью

Разработка чек-листов и стандартов кодирования для обеспечения консистентности.

Коммуникация и сотрудничество

Разработка процесса, в котором рецензенты используют отчеты анализа, созданные автоматизированными ИИ инструментами, для объективного обсуждения кода.

Это позволяет перенести акцент субъективной критики на объективные данные, способствуя конструктивной обратной связи и профессиональному развитию. Регулярные встречи команды, на которых обсуждаются результаты анализа и стратегии улучшения кода, также способствуют культуре сотрудничества и непрерывного обучения.

Технические ограничения

Оценка и выбор подходящих ИИ инструментов для код ревью, которые можно легко интегрировать в существующие рабочие процессы и настроить с учетом специфики проектов и команды.

Мы уже немного затронули ИИ, время разобраться в том, как он влияет на код ревьюинг.

Преимущества использования ИИ

Внедрение искусственного интеллекта в процесс код ревьюнга позволяет автоматизировать рутинные задачи и заметно повышает качество и эффективность проверки кода. В целом, позволяет расширить возможности разработчиков и рецензентов, делая процесс более глубоким и менее трудозатратным.

На всякий случай сделаем оговорку:

Искусственный интеллект (ИИ) – это область информационных технологий, занимающаяся созданием машин, способных имитировать человеческий интеллект: от генерации и распознавания естественного языка до реализации более узких задач.

ИИ инструменты для код ревьюнга

Amazon CodeGuru Reviewer

Инструмент, предоставляемый Amazon Web Services, использует машинное обучение для анализа исходного кода и обнаружения проблем, таких как дефекты написанного, неэффективное использование ресурсов, неоптимальные практики и потенциальные уязвимости.

У него есть с десяток заметных преимуществ:

  • Автоматический анализ кода: Инструмент автоматически проводит анализ кода на этапе пул-реквестов, что помогает обнаружить проблемы до их попадания в продакшн.
  • Поддержка многих языков: CodeGuru поддерживает ряд популярных языков программирования, включая Java и Python.
  • Обучение на больших данных: ИИ CodeGuru обучается на десятках тысяч проектов и миллионах линий кода, обеспечивая высокую точность и релевантность предложений.
  • Проверка на уязвимости: Обнаруживает известные уязвимости в коде, что позволяет разработчикам исправить их до релиза.
  • Оптимизация производительности: Дает рекомендации по оптимизации производительности (например, находит неэффективный код, который замедляет приложение или увеличивает расходы на вычислительные мощности).
  • Интеграция с существующими инструментами: CodeGuru легко интегрируется с популярными инструментами разработки и CI/CD платформами, такими как GitHub, Bitbucket и AWS CodeCommit.
  • Анализ использования ресурсов: Анализирует использование ресурсов AWS и дает рекомендации по сокращению затрат.
  • Обучение на реальных отзывах: CodeGuru Reviewer может обучаться на основе фидбэка от разработчиков, со временем улучшая точность и релевантность своих рекомендаций.
  • Простота использования: Легкость настройки и использования позволяет быстро начать работу с инструментом, без необходимости глубоких знаний в машинном обучении.
  • Комментарии и рекомендации в контексте: CodeGuru Reviewer предоставляет комментарии и рекомендации непосредственно в контексте строки кода, к которой они относятся, упрощая понимание и исправление проблем.
  • Масштабируемость: Благодаря облачной инфраструктуре Amazon, CodeGuru способен обрабатывать большие объемы кода, что подходит для крупных и быстроразвивающихся проектов.
  • Интеграция с AWS: Плотная интеграция с экосистемой AWS упрощает использование для тех, кто уже является клиентом AWS, и обеспечивает дополнительные функции.
  • Улучшение кода в реальном времени: Предоставляет рекомендации по улучшению кода в реальном времени, что помогает ускорить обучение разработчиков и процесс разработки.

Но нет ничего идеального, вот основные минусы:

  • Ограниченная поддержка языков: На данный момент поддерживает ограниченное количество языков программирования
  • Стоимость: Как и многие продукты AWS, CodeGuru может быть дорогим при использовании в больших объемах, особенно для стартапов и малого бизнеса.
  • Кривая обучения: Хотя сам инструмент относительно прост в настройке, интерпретация и внедрение его рекомендаций могут потребовать времени и определенных знаний.
  • Зависимость от экосистемы AWS: Для максимальной эффективности инструмент предполагает использование других сервисов AWS, что может быть неудобным для команд, не использующих облачные решения Amazon.
  • Ложные срабатывания: Как и любые другие автоматические инструменты, CodeGuru может порождать ложные срабатывания, требующие дополнительной проверки разработчиками.

Инструмент в действии

Предположим, есть небольшой фрагмент кода AWS Lambda функции на Golang, который содержит распространенную ошибку неэффективного использование ресурсов:

Amazon CodeGuru Reviewer может выявить эту проблему как неэффективное использование ресурсов Lambda, поскольку функция может истечь по времени до того, как будут обработаны все таймеры, и предложить решения, такие как использование внешних триггеров для вызова Lambda функции или применение других методов асинхронной обработки для эффективного управления временем выполнения функции.

SonarQube

SonarQube – платформа для непрерывного анализа качества исходного кода, которая помогает разработчикам обнаруживать проблемы и исправлять их, улучшая безопасность, поддерживаемость и производительность. Кроме того, платформа предоставляет обширные отчеты о проделанной работе.

Вот лишь часть того, на что способен этот инструмент:

  • Широкая поддержка языков: SonarQube предлагает анализ для более чем 20 языков программирования, включая самые популярные.
  • Обнаружение уязвимостей и ошибок: Автоматически идентифицирует потенциальные уязвимости и ошибки в коде.
  • Отслеживание технического долга: Оценивает и отслеживает технический долг, предоставляя рекомендации по его уменьшению.
  • Непрерывная интеграция: Легко интегрируется с CI/CD инструментами, обеспечивая автоматизированный и непрерывный анализ.
  • Глубокий анализ качества: SonarQube предоставляет детальные отчеты по ошибкам, уязвимостям и "запахам кода", помогая улучшить качество и поддерживаемость кода.
  • Пользовательские правила и профили качества: Позволяет создавать пользовательские правила и профили качества, адаптированные под специфические требования проекта или команды.
  • Панель управления и отчеты: Предлагает детализированные панели управления и отчеты о качестве кода.
  • Поддержка плагинов: SonarQube поддерживает широкий ассортимент плагинов, расширяя его функциональность и позволяя интегрировать дополнительные инструменты анализа и обработки.
  • Управление безопасностью: Оценивает и анализирует безопасность кода.
  • Коллаборативные функции: Улучшает сотрудничество в команде с помощью комментариев, обсуждений и прямого назначения задач на исправление проблем в коде.

Теперь к основным недостаткам:

  • Комплексность настройки: Настройка SonarQube и его интеграция с существующими системами могут быть сложными для новых пользователей или небольших команд.
  • Производительность: Анализ больших проектов может быть времязатратным, что потенциально замедляет рабочий процесс разработки.
  • Стоимость для крупных команд: Хотя существует бесплатная версия, расширенные функции и версия Enterprise могут быть дорогостоящими для крупных организаций.
  • Обучение и поддержка: Из-за обширности функционала и настроек может потребоваться значительное время для изучение инструмента и его эффективного использования.
  • Возможность ложных срабатываний: Как и любой инструмент статического анализа кода, SonarQube может генерировать ложные положительные результаты, требующие дополнительной ручной проверки.

Инструмент в действии

Давайте создадим пример кода на Python, который содержит потенциальную уязвимость, связанную с небезопасной обработкой внешних данных, например, SQL инъекцией. Приведем пример кода, который собирает SQL запрос, используя конкатенацию строк (что является плохой практикой) и покажем, как SonarQube указывает на эту уязвимость и предлагает исправление.

В этом коде user_id напрямую конкатенируется в SQL запрос, что делает его уязвимым для SQL инъекции. SonarQube может выявить этот риск и предложить использовать параметризованные запросы для предотвращения инъекции. Вот пример того, как он предлагает улучшить код в отчете после анализа:

В улучшенном варианте функции get_user_data_safe мы используем плейсхолдер в SQL запросе и передаем user_id как параметр в метод execute, что предотвращает внедрение вредоносного SQL кода. SonarQube обычно рекомендует этот подход для обеспечения безопасности работы с базой данных.

DeepCode by Snyk

DeepCode – инструмент, использующий семантический анализ и машинное обучение для обнаружения уязвимостей и других проблем в коде.

Вот ключевые возможности и особенности DeepCode:

  • Ориентированность на разработчика: Snyk разработан с акцентом на удобство для разработчиков, предлагая простые и понятные средства для исправления уязвимостей без нарушения рабочих процессов.
  • Мгновенное сканирование и исправление: Реальное время сканирования и автоматическое предложение решений для обнаруженных уязвимостей ускоряют процесс устранения проблем.
  • Широкая поддержка языков и инструментов: Snyk поддерживает множество языков программирования и инструментов разработки, включая различные IDE и системы CI/CD, а также постоянно расширяет свою совместимость.
  • Продвинутая база знаний: За Snyk стоит мощный движок машинного обучения, анализирующий миллионы открытых библиотек, что позволяет постоянно улучшать инструменты безопасности на основе вклада из открытого исходного кода.
  • Приоритизация рисков: Инструмент помогает определить и сосредоточить внимание на наиболее критических уязвимостях кода, улучшая общую безопасность приложений.
  • Интеграция безопасности в повседневную работу: Snyk гладко интегрируется в ежедневные рабочие процессы разработчиков.
  • ИИ-улучшенный опыт разработки: Система использует ИИ, разработанный с использованием технологии DeepCode, для точного определения уязвимостей и предложения практических решений.
  • Ворота безопасности CI/CD: Внедряет сканирование уязвимостей в процесс сборки, повышая безопасность приложений.
  • Настройка тестирования и правил: Позволяет создавать пользовательские запросы и правила с помощью поиска DeepCode AI, предлагая гибкость в адаптации под конкретные потребности разработки.
  • Интеграции с популярными инструментами разработки: Snyk предлагает обширный набор интеграций с такими инструментами, как Bitbucket, Jira, GitHub, и IntelliJ, облегчая внедрение мер безопасности в существующие рабочие процессы разработки.
  • Приоритизация и точность: Использование ИИ для анализа и приоритизации уязвимостей обеспечивает высокую точность обнаружения и целенаправленное исправление наиболее критических угроз.

Теперь к минусам:

  • Фокус на безопасности, а не на качестве кода: Основное внимание DeepCode уделено безопасности, что означает меньшее внимание общему качеству кода.
  • Кривая обучения: Несмотря на удобство для разработчиков, полное использование всех возможностей DeepCode может требовать времени на обучение и адаптацию.
  • Стоимость для крупных команд и проектов: Для больших организаций и проектов стоимость подписки на Snyk, включающую функции DeepCode, может быть значительной.
  • Возможность ложных срабатываний: Как и любой автоматизированный инструмент анализа, DeepCode может генерировать ложные срабатывания, требующие дополнительной проверки и настройки.
  • Зависимость от внешних интеграций: Максимальная эффективность DeepCode достигается при использовании вместе с другими инструментами и платформами, что может представлять проблему для команд, использующих уникальные или специализированные инструменты разработки.

Инструмент в действии

Вот пример кода на Golang, который содержит проблему по неправильному закрытию файлового дескриптора, что может привести к утечкам ресурсов.

В этом коде файл example.txt открывается, но не закрывается правильно. Инструменты DeepCode выявят отсутствие defer file.Close() и предложат добавить эту строку сразу после успешного открытия файла для обеспечения его закрытия, как только завершится работа с ним. Также они предложат исправленный вариант:

Добавление defer file.Close() гарантирует, что файловый дескриптор будет корректно закрыт после завершения работы с файлом, предотвращая утечку ресурсов.

Code Climate

Code Climate – платформа, которая предоставляет автоматизированный код ревью и анализ качества с использованием инструментов машинного обучения.

К плюсам или возможностям и особенностям относятся:

  • Автоматизированные комментарии: Code Climate предоставляет автоматические комментарии к пул-реквестам, помогая улучшить качество и безопасность кода прямо в процессе разработки.
  • Полное покрытие тестами: Платформа позволяет проверять покрытие кода тестами построчно внутри изменений кода, предотвращая слияние кода без адекватного тестирования.
  • Оповещения о поддерживаемости: Code Climate помогает активно бороться с техническим долгом, выделяя файлы с частыми изменениями, недостаточным покрытием тестами и проблемами поддерживаемости.
  • Приоритизация кода: Инструмент позволяет выявлять критические области кода, нуждающиеся в улучшении, соединяя информацию о качестве кода с областями высокой изменчивости.
  • Статусы пул-реквестов (pull request): Предоставляет статусы покрытия и поддерживаемости для каждого пул-реквеста, давая детальное представление о состоянии кода.
  • Анализ начального обзора: Анализирует первые отклики на пул-реквесты для оценки качества ревью.
  • Отслеживание покрытия: Мониторит процент комментированных файлов для измерения тщательности ревью кода.
  • Скорость ревью: Измеряет время от открытия пул-реквеста до первого ревью, указывая на оперативность обратной связи.
  • Влияние ревью: Оценивает воздействие комментариев ревью на изменения в коде и ответы.
  • Анализ рецензентов: Предоставляет метрики участия рецензентов, выявляя узкие места и обеспечивая сбалансированное участие.
  • Доступность и удобство использования: Платформа предлагает бесплатный план для малых проектов и удобные платные опции, а также интуитивно понятный интерфейс.

Из того, что может отпугнуть вас от этого инструмента:

  • Стоимость для крупных команд: Для крупных организаций со множеством приватных репозиториев стоимость использования Code Climate может быть высокой.
  • Кривая обучения: Некоторым командам может потребоваться время для адаптации и полного использования всех возможностей платформы.
  • Ограничения бесплатного плана: Бесплатный план имеет ограниченный набор функций, что может потребовать переход на платное обслуживание для полного доступа.
  • Возможность ложных срабатываний: Как и любой автоматизированный инструмент анализа кода, Code Climate может генерировать ложные срабатывания, требующие дополнительной проверки.
  • Зависимость от интеграций: Полная функциональность Code Climate зависит от его интеграции с другими инструментами и платформами, что может быть препятствием для команд, использующих менее популярные или специализированные инструменты.

Инструмент в действии

Code Climate может выявлять так называемый code smells, которые могут указывать на более глубокие проблемы в структуре кода. Допустим, есть код на Python, который нарушает принципы DRY (Don't Repeat Yourself) и содержит дублирование логики. Вот пример такого кода:

Code Climate после анализа кода выделит дублирование строки dataset['processed'] = True и предложит устранение этого дублирования путем создания отдельной функции, которая будет обрабатывать общую логику. Вот исправленный вариант с учетом рекомендации Code Climate:

В исправленном примере мы избавились от дублирования кода путем вынесения повторяющейся логики в отдельную функцию mark_as_processed, что делает код более чистым, легким для поддержки и расширения.

Code Climate фокусируется на подобных улучшениях структуры и чистоты кода, помогая разработчикам поддерживать высокие стандарты качества кода и избегать технического долга.

Заключение

Выбор ИИ-инструмента для код ревью зависит от множества факторов, включая технические требования проекта, предпочтения команды и бюджетные ограничения.

Однако, независимо от выбора, важно помнить, что успешная интеграция таких инструментов требует не только технических усилий, но и развития культуры код ревью внутри команды, где такие инструменты рассматриваются как помощники, а не заменители человеческого взаимодействия и экспертизы.

Создание эффективного процесса код ревью, подкрепленного современными технологиями, позволяет командам достигать высоких стандартов качества при одновременном сокращении времени на разработку и увеличении удовлетворенности работы среди разработчиков.

Ну а сейчас самое время пройти тест и понять, насколько вы финансово грамотные. Поехали!
Теги:
Tags:
Рекомендуется к прочтению
What to read next
НовостиНовости недели: Тюркский банк в ЦА, 100 млн. клиентов в Бразилии и похищение директора криптокомпании в Канаде

Казахстанские банки начали внедрение стандарта ISO 20022 для модернизации платежных систем, а активы банков страны выросли на 6,7 трлн тенге за 2024 год.

18/11/2024 2:07
ИнтересноеИскусственный Интеллект и все, все, все

Наш редактор Катерина уже делилась своим опытом взаимодействия с Chat GPT, но это – не мнение профессионала и исследователя. Мы решили погрузиться еще ...

15/11/2024 18:00
В миреКаково это основывать стартап в live режиме в Нидерландах: история Parlaxy

Это интервью отличается от остальных. Чаще всего мы говорим с теми, у кого уже все получилось. А на этот раз – с теми, за кого болеем и верим, что все еще впереди.

18/11/2024 2:07

Материалы по теме

писельная стрелка вправо зеленая

Other materials

писельная стрелка вправо зеленая
Кибербезопасность: статистика нам в помощь

Хорошо, когда у СМИ есть четко оговоренный формат и тематика ...

7/10/2024

Хорошо, когда у СМИ есть четко оговоренный формат и тематика – можно не гнаться за скандальными новостями и не участвовать в острой полемике, спокойно ...

Могу ли я открыть стартап

Сколько бы ни было понятно, что собственный бизнес дает неплохую ...

6/10/2024

Сколько бы ни было понятно, что собственный бизнес дает неплохую возможность для заработка, стресс и возможность неудачи останавливает многих из нас от шага вперед.

Как взлететь по карьерной лестнице: пошаговая инструкция

Одни приходят на работу ассистентами и уже через год становятся ...

1/10/2024

Одни приходят на работу ассистентами и уже через год становятся руководителями отдела с многократным увеличением заработной платы, а другие годами ...

Вопрос от редакции: idocs

Вы все правильно прочли, это именно вопрос “от редакции”, а не “в редакцию”.

30/8/2024

Вы все правильно прочли, это именно вопрос “от редакции”, а не “в редакцию”. Вопрос от редакции – наша новая рубрика, где мы спрашиваем у лидеров ...

Читать ещеMore

Читайте также

писельная стрелка вправо зеленая
Amazon Haul: товары до $20 и доставка из Китая

Amazon запускает новый магазин «Amazon Haul» с акцентом на ультрабюджетные покупки. Здесь можно найти одежду, электронику, товары для дома и многое другое по цене до $20.

Amazon запускает новый магазин «Amazon Haul» с акцентом на ультрабюджетные покупки. Здесь можно найти одежду, электронику, товары для дома и многое другое по цене до $20.

15/11/2024
Новость дня: казахстанские банки обяжут отправлять SMS-пароль для онлайн-кредитов

АРРФР планирует обязать банки отправлять одноразовый SMS-пароль при выдаче онлайн-кредитов. Также в мобильных приложениях появится удобный функционал ...

АРРФР планирует обязать банки отправлять одноразовый SMS-пароль при выдаче онлайн-кредитов. Также в мобильных приложениях появится удобный функционал ...

14/11/2024
Возможности от Yandex Qazaqstan

Yandex Qazaqstan запускает серию воркшопов по искусственному интеллекту для студентов ведущих университетов Казахстана.

Yandex Qazaqstan запускает серию воркшопов по искусственному интеллекту для студентов ведущих университетов Казахстана.

13/11/2024
Биткоин приближается к историческому максимуму в $90,000

Цена биткоина взлетает, как на ракете: в понедельник вечером он вплотную подошел к отметке $90 тысяч.

Цена биткоина взлетает, как на ракете: в понедельник вечером он вплотную подошел к отметке $90 тысяч.

13/11/2024
Читать ещеMore