Привет!
Контекст для других читающих - обсуждали как снизить субъектив на ревью, и внедрить какие-то общие правила
Предлагали FxCop/SonarLint в качестве легковесного линтера, и SonarQube в качества мощного хранилища техдолга и анализа качества
Понравилась фича интеграции с битбакетом у SonarQube, решил пробовать сразу его
Обещал Александру рассказать о результатах внедрения
Рассказываю опыт на текущий момент
Хотелки:
- внедрить жёсткую проверку в pipeline чтобы останавливать билд, если не соблюдены требования к качеству
- автоматический анализ пулл реквеста и запрет мерджа если есть критичные замечания
- декорирование пулл реквестов комментариями с результатами анализа вроде "тут баг, тут smell, а тут покрытия мало"
Развернул SonarQube, первая проблема - по рекомендациям нужно несколько серверов только под него, под базу и воркеры
Вторая проблема - Community edition не поддерживает анализ бранчей и пуллов
Если все равно платить, зачем держать у себя, мучаться настройкой, и ещё за сервера платить - беру SonarCloud
Он бесплатный для опенсорс проектов, поднимаю его для демо-проекта чтобы пощупать функционал без кредиток и звонков продажников через 2 недели
Третья проблема - BitBucket Cloud не может в сборку .NET framework проектов (демо проект взят максимально близко по стеку к целевому)
Проблема известна много лет, решения не предвидится - виндовых контейнеров не завезли
Можно через mono, если очень хочется
Блокер раз - сонарклауд не поддерживает декорирование в битбакете
Блокер два - у сонарклауда нужен отдельный сканер для .NET проектов, поэтому проверку quality gate в виде готового pipe встроить не получается - она заточена на другой pipe со стандартным сканером
Итого - проблема скорее в битбакете чем в сонаре
Гугл даёт альтернативу в виде Azure DevOps (как в жалобах на битбакет, так и на форумах сонара)
Проект все равно об Azure и развернут нем же, органично получается - перевезти и исходники в их экосистему
Итог - поднят демо проект в Azure DevOps, сборка и анализ настроены из шаблона по гайду без всяких подводных камней
Декорирование и запрет мержа - также по гайду
В целом выглядит очень неплохо, цена будет €150/месяц на текущий объем кодовой базы, плюс цена Azure DevOps (не считал)
Минус SonarCloud - не поддерживает кастомные правила анализа, есть только в SonarQube
хотел бы добавить только что существует community branch plugin