Т
Так не сойдет
@tak_ne_sojdet142 подп.
304просмотров
17 июня 2025 г.
statsScore: 334
Как внедрять линтеры (2/2) 1. Выберите инструмент Для начала возьмите самый популярный или рекомендуемый создателями языка. Как правило, базовые потребности они закрывают. 2. Подключите линтер к проекту Убедитесь, что линтер подключается на машине нового разработчика автоматически. Большинство платформ предоставляют анализаторы в виде зависимостей, а инструменты поддерживают шаринг настроек через git. Если требуется ручная настройка, включите ее в онбординг. Правила анализа на данном этапе лучше оставить пустыми или включить 1-2 правила для теста. 3. Встройте выполнение линтера в CI Без CI разработчики будут забывать выполнить линтер вручную и не качественный код будет просачиваться в master. 4. Постепенно включайте правила и настраивайте их под команду За основу лучше взять готовый пресет, поставляемый с инструментом. Включение очередного правила лучше сливать в master через отдельную ветку без функциональных изменений. Так вы убедитесь, что вся команда получит новую версию настроек как можно скорее. СОВЕТЫ ⚠️ Избегайте уровня warning Старайтесь принимать «бинарное решение»: либо считаем несоблюдение правила ошибкой (error), либо выключаем его (none). Warning подразумевает, что человеку необходимо принять решение, а наша цель - избавиться от ручного труда. Плюс они подобны баннерам: со временем их перестают замечать. ⚡️ Любое решение сейчас лучше, чем идеальное решение никогда Цель не в том, чтобы выбрать самые правильные настройки. Цель в том, чтобы договориться до единых подходов. Если коллеги не согласны с предлагаемыми настройками, не слишком старайтесь переубедить их. Мнения могут отличаться, но главное - чтобы коллеги согласились соблюдать принятые правила. Disagree, but commit! 🔒Не старайтесь стандартизировать все Стандартизация имеет свои плюсы, но часто сопряжена с неудобством в каждом конкретном случае. Если допустимы разные варианты, а мнения расходятся, можно вовсе отключить правило. Пример к последним двум пунктам В .NET запятая после последнего аргумента инициализатора является опциональной. В одной из команд мы договорились не ставить ее, в другой - ставить обязательно. А в третьей - вовсе решили, что нас устраивает любой вариант и отключили правило. Все варианты имеют свои плюсы и минусы, приводят к разным последствиям. Неважно какой был выбран, главное - IDE автоматически форматировала код исходя из настроек линтера. 🥸 Не проходите мимо некорректного правила Худшее, что можно сделать - это начать подстраивать код под инструмент, когда инструмент не прав. Если сталкиваетесь с ошибкой, то постарайтесь быстро внести изменения в настройки в неблокирующем режиме. В «Мой спорт» я внедрил такой подход: если линтер не прав, то разработчик пишет в общий чат предложение по изменению настроек. Если от тимлидов возражений не поступает - вносит изменения в настройки в своей ветке. ⏳Не ждите позитивных улучшений в краткосрочной перспективе Помните, что настройка линтеров - это инвестиция, а значит окупается в долгосрочной перспективе. Первое время, неудобства будут обнаруживаться спонтанно. Будьте готовы реагировать оперативно. 🙏 Подготовьтесь к критике и просьбам сделать исключение «Нам сейчас очень надо», «нет времени исправлять», «сейчас зарелизим, потом поправим» и подобные фразы вы будете слышать очень часто. Проявите эмпатию, но не позволяйте исключениям свести на нет ваши усилия. Иначе получите exceptional debt (см. The Elegant Puzzle). Описанным я пользовался много раз Самый показательный пример из моей практики - внедрение SonarQube в «Мой спорт». Встроив его в CI, я снял с себя необходимость вручную контролировать выполнение архитектурных правил. Накопипастить код и не покрыть его тестами, сделать класс с 10ю зависимостями на 700строк кода и т.д. стало невозможно. CI не пропустит такую ветку. Дополнительный профит: правила перестали восприниматься как «бюрократия». Если раньше мне приходилось выступать источником негативного фидбека, то теперь за меня это делает CI. А с ним спорить бесполезн
304
просмотров
4000
символов
Да
эмодзи
Нет
медиа

Другие посты @tak_ne_sojdet

Все посты канала →
Как внедрять линтеры (2/2) 1. Выберите инструмент Для начала — @tak_ne_sojdet | PostSniper