SonarQube. Почему все-таки нет

12.03.25

Разработка - DevOps и автоматизация разработки

Расскажу, почему осознанно не буду внедрять SonarQube в свой рабочий процесс несмотря на то, что инструмент очень понравился. Статей, как его внедрили и используют, много. А почему внедрили, попробовали и отказались, по-моему, еще не было.

Для начала давайте четко определим, для чего предназначен данный инструмент. Начнем издалека (потерпите пару абзацев) - попробуем разобраться, что такое "качество кода".

Качество - это совокупность характеристик объекта, относящихся к его способности удовлетворить установленные и предполагаемые потребности.

Т.е. основное назначение процесса обеспечения качества кода - удовлетворять чьи-то потребности. Вопрос - чьи? 

Если бы речь шла про качество продукта - то здесь однозначно можно сказать, что основным потребителем является заказчик, который за этот продукт платит. С качеством кода вопрос посложнее. Во-первых, я не нашла четкого общепринятого определения, что это такое. Во-вторых, если Вы поищете статьи в интернете, то увидите, что потребителями этого качества могут являться как сами заказчики (т.к. код является неотъемлимой частью конечного продукта), так и сами разработчики, которые вынуждены обслуживать этот код. 

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

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

 

Для чего это нудное введение? Для того, чтобы четко определить, чью потребность в качестве закрывает SonarQube. А закрывает SonarQube потребность в качестве кода именно разработчиков. Можно написать отвратительный, неработоспособный код, приводящий к серьезным проблемам производительности, и при этом он пройдет все проверки. Т.е. качество кода, обеспечиваемое данным инструментом, не гарантирует качество конечного продукта. Его основная задача сделать код "красивым" и читаемым.

Теперь, если рассматривать деятельность по внедрению и сопровождению типовых/отраслевых решений (а мы именно ей и занимаемся), то ключевая задача, которую нужно решить, - это все-таки качество конечного продукта. Чтобы клиент был доволен, заплатил, а нам не приходилось бесплатно исправлять свои ошибки. И основными инструментами для обеспечения качества продукта на этапе разработки являются код-ревью и тестирование. (Переложить проверку кода на SonarQube, как мы уже выяснили, не получится - он контролирует не то качество, которое нам нужно).

У нас в команде самый простой набор инструментов: Хранилище - Gitlab - Яндекс Трекер. И пересматривать его мы в ближайшее время не планируем, он закрывает наши потребности. Разработчик выкладывает доработки по своей задаче в хранилище и переводит задачу в трекере на ревью. Код проверяется техническим архитектором на отсутствие ошибок, соответствие технической постановке и на оптимальность (он не должен приводить к проблемам производительности). И затем отправляется на тестирование. 

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

Что мы получили после внедрения SonarQube:

  • После выкладки в хранилище разработчику спустя некоторое время начинают приходить письма с замечаниями. В это время он уже переключился на работу по другой задаче. Он вынужден либо отвлекаться (что сразу влияет на результат), либо откладывать отработку замечаний на потом. Как итог - объем незакрытых замечаний копится, к тому моменту как разработчик вернется к вопросу устранения замечаний, высока вероятность, что нужный ему объект будет захвачен.
     
  • Накопленный объем незакрытых замечаний отработать невозможно. Задачи на разработку идут непрерывным потоком и по всем сроки жесткие. Выделить время на то, чтобы сесть и отработать все замечания не получается. Тем более поправить несколько десятков (или сотен) накопленных - это не одно-два устранить. (И честно, сидеть их закрывать - очень сильно раздражает. Особенно когда 99% - это придирки к оформлению, по типу пробелов в комментариях, длины наименований методов и т.д.).
     
  • Отработка замечаний требует времени. Если в карточке замечания написано, что устранение займет одну минуту - это вовсе не означает, что у Вас уйдет ровно минута. На самом деле дольше, особенно поначалу, пока Вы все правила не освоите. Т.е. трудозатраты на разработку чувствительно возрастают. У нас накопленный тех.долг по мнению SonarQube в рамках проекта приблизился к 10 процентам от часов, выделенных на разработку. А ведь мы еще все-таки часть замечаний отработали.
     
  • Основное рабочее место, в котором разработчики получают обратную связь по задачам, - это Яндекс Трекер. Теперь же появляется дополнительное рабочее место, в котором тоже нужно отслеживать и отрабатывать замечания. Работать в двух рабочих местах - неудобно.

На самом деле мы могли бы все недостатки устранить. НО, мы зашли в тупик из-за отсутствия интеграции между SonarQube и Трекером. (Если кто-то знает про примеры интеграций с любыми трекерами задач, буду благодарна за обратную связь. Я пока не нашла). Если бы мы могли в карточке задачи в трекере видеть неотработанные замечания, тогда бы этот инструмент отлично вписался в наш процесс и мы бы его использовали. Замечания бы цеплялись к карточке до ревью/тестирования, и разработчик бы их отрабатывал совместно с замечаниями от аналитика/тех.архитектора.

А так, на текущий момент принято решение отказаться от использования данного инструмента т.к.:

  • Он не обеспечивает качество конечного продукта для клиентов, которое для нас важнее качества кода для разработчиков. Для удовлетворения нужд наших заказчиков наш код и так - очень качественный.
  • Он не избавляет от необходимости выполнения код-ревью, и не сокращает трудозатраты на его проведение.
  • Увеличиваются трудозатраты на разработку. На 10-15% точно поначалу.
  • Этот инструмент не вписывается в наш рабочий процесс и создает дополнительные неудобства разработчикам.
  • Обеспечить отработку всех замечаний на текущем наборе инструментов мы не можем.  Растущий тех. долг, как незакрытый банковский кредит, портит настроение. А себя надо любить, беречь и не допускать лишние негативные эмоции в свою рабочую жизнь.

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

P.S. SonarQube - очень хороший, дисциплинирующий инструмент. Главное, чтобы Вы четко понимали, для каких целей он Вам нужен и нужен ли. А не бездумно внедряли, потому что это "стильно, модно, молодежно".

Архитекторы развлекаются Архитектурные заметки SonarQube долой стереотипы пофилософствуем?

См. также

Тестирование QA DevOps и автоматизация разработки Программист Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.166.17.

2160 руб.

20.01.2022    8632    30    0    

15

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Программист Стажер Платформа 1С v8.3 Платные (руб)

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 руб.

29.06.2022    13032    108    4    

139

Тестирование QA DevOps и автоматизация разработки Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.17.168.

2400 руб.

04.07.2022    9139    40    1    

31

DevOps и автоматизация разработки Тестирование QA Программист Пользователь Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Зарплата и Управление Персоналом 3 и версии КОРП: 3.1.30.108.

3000 руб.

05.08.2024    2069    17    1    

11

Нейросети Рефакторинг и качество кода Тестирование QA Программист Платформа 1С v8.3 Бесплатно (free)

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

вчера в 10:20    1962    mrXoxot    41    

37

Инструментарий разработчика Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

Расширяемый форматтер структуры модулей 1С. Умеет автоматически расставлять стандартные области и раскидывать по ним процедуры и функции модуля, оформлять стандартные комментарии к методам с помощью ИИ. Также умеет анализировать модуль - извлекать структуру вызовов, используемые поля и т.д. Реализован в виде расширения (.cfe). Можно использовать как платформу для обработки кода в своих задачах автоматизации разработки.

12.02.2025    6386    414    wonderboy    42    

117

Тестирование QA Программист Платформа 1С v8.3 Бесплатно (free)

Чтобы обеспечить высокое качество тиражной конфигурации 1С, ручного тестирования недостаточно – нужно учесть множество комбинаций функциональных опций, группы доступа и влияние подсистем друг на друга. Расскажем о промышленном тестировании флагманского продукта 1С:ERP и его дочерних конфигураций.

31.01.2025    8401    Pr-Mex    61    

41

Журнал регистрации Тестирование QA Программист Бесплатно (free)

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

21.10.2024    4051    leemuar    8    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Evg-Lylyk 4946 12.03.25 10:48 Сейчас в теме
На мой взгляд важный плюс Сонара что он учит. И без него многие продолжают писать "очень качественный код с точки зрения заказчика" не читая стандарты.
2. bayselonarrend 2509 12.03.25 11:10 Сейчас в теме
Можно было просто заранее прочитать, что такое "статический анализатор" (которым SQ и является) и пул его задач. Вы бы еще до установки закрыли вопрос

для каких целей он Вам нужен и нужен ли


Причем, что первая статья, что эта - "ну мы установили, что-то потыкались, не поняли, почему статический анализатор не умеет править архитектурные проблемы в говнокоде, и вообще, чтобы его ошибки решать надо время выделять, не зашло крч". Хотя можно просто неинтересные правила поотключать, оставить только самые критические, вроде запросов в цикле или обращения к неинициализированным переменным, которые обязательно выстрелят, и это было бы не какое-то абстрактное "качество кода для программиста" и "красивый код", а выявление потенциальных исключений
Evg-Lylyk; aximo; +2 Ответить
3. SerVer1C 876 12.03.25 11:20 Сейчас в теме
Вы можете написать под сонар свои правила проверки - и тогда получите качество кода под ваши хотелки. СонарКуб - отличный инструмент. А применять ли вам его или нет - вопрос вкуса.
Оставьте свое сообщение