Оценка необходимости рефакторинга кода с помощью ИИ

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

SonarQube является одним из самых популярных средств для контроля качества кода: умеет вычислять метрики кода, фиксирует расхождение с правилами кодирования. Необходимость рефакторинга фрагмента кода определяется с помощью так называемых QualityGate. QG - это взвешенный набор правил, который необходимо настраивать вручную, определяя для каждого правила уровень критичности.

Однако, практика показывает, что "мнение" QG довольно часто не совпадает с мнением программистов, часто наблюдаются "ложные" срабатывания.

Qualiter 3 - это решение по оценке необходимости рефакторинга фрагменте кода на основе технологий искусственного интеллекта (ИИ). Нейронные сети являются моделями нервной системы, по своей структуре напоминают мозг человека, система обучается на мнениях программистов и реальных примерах программного кода. Соответственно оценка Qualiter 3 должна оказаться точнее чем оценка стандартного QG, базируемого на жестких правилах.

При составлении QG каждому правилу необходимо придавать уровень критичности, что не совсем просто. Действительно, к примеру, руководствуясь какими соображениями можно понять какой может быть максимальная длина методов или сколько аргументов допустимо использовать в методах или является ли критичным использование имени поля log вместо LOG? В Qualiter 3 нет необходимости придавать уровень критичности тем или иным правилам т.к. решение о необходимости рефакторинга кода принимается нейронной сетью[1], т.е. алгоритмом с нечеткой логикой, обученном на примерах.

В качесте "негативных" обучающих примеров можно использовать фрагменты кода, в которых произошла реальная ошибка. Такие примеры можно получать анализируя логи с production. Возможность распознать образ "ошибочного кода" делает ценность подхода с использованием искусственного интеллекта выше, чем c использованием стандартного QG.

Эффективная система определяющая необходимость рефекторинга фрагмента кода может использоваться для отсеивания "плохих" особей в эволюционных системах по генерации программного кода.

Дата обновления страницы: 16 июля 2018 17:00

Литература

  1. https://en.wikipedia.org/wiki/Artificial_neural_network

Новости

  • Релиз Qualiter 4.5.0. Произведена интеграция с платформой SonarQube
    30 января 2019
  • Релиз Qualiter 3.1.0. Добавили Rest API.
    04 сентября 2018
  • Релиз Qualiter 3.0.3. Утилита для оценки необходимости рефакторинга компиляционной единицы Java кода. Доступно онлайн Demo.
    16 июля 2018
Все новости