Запах SELECT'а. Обнаружение CODE SMELL до отправки T-SQL кода на прод
IVNSTN 7 минут назад Запах SELECT'а. Обнаружение CODE SMELL до отправки T-SQL кода на прод Средний 25 мин 194 SQL * Microsoft SQL Server * Программирование * Качество кода * Кейс ОглавлениеI Трудности...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. IVNSTN 7 минут назад Запах SELECT'а. Обнаружение CODE SMELL до отправки T-SQL кода на прод Средний 25 мин 194 SQL * Microsoft SQL Server * Программирование * Качество кода * Кейс ОглавлениеI Трудности селектописательстваII Доступные средстваIII Защита от CODE SMELLIV ИспытанияP. TLDRНаписал свой вариант T-SQL линтера для работы и выложил на GitHub:T-SQL плагин с описанием более 500 правилконсольный раннерэкстеншен для VS 2019 и VS 2022+ собранные бинарники находятся в разделе Releases.
Пример вызова консольного линтера для пробного прогона:. exe --dir "c:\source\my_project" --evaluateС флагом --evaluate можно проверить, что полезного найдёт линтер без учёта правил про нейминг и форматирование. I Трудности селектописательстваПрактика открыть SSMS, подключиться к проду, кликнуть по названию хранимки и выбрать пункт меню «Modify», после манипуляций нажать F5, всё не уйдёт в небытие.
Технические детали
Можно согласиться, что с опытом нарабатывается чутьё на потенциальные проблемы, но, что гораздо важнее, и знание возможных мероприятий, практик, приёмов, позволяющих снизить вероятность ошибки, упростить обнаружение проблемы, проникшей в код, ограничить негативные последствия. Подобные практики хорошо описаны в материалах по DevOps-идеологии и в SWEBoK. К тематике статьи ближе всего эти:организация исходного кода;автоматизированное тестирование;ревью изменений;непрерывная интеграция;метрики качества кода.
Экосистема SQL-разработкиВ экосистемах других направлений программирования давно стали нормой, частью элементарной гигиены проектов инструменты наподобие eslint, flake8, StyleCop, каждый с более чем сотней встроенных правил. Статьи с описанием базовой настройки репозитория, номинального пайплайна CI/CD для этих направлений в обязательном порядке содержат пункты с подключением статического анализатора кода, с запуском юнит-тестов и расчётом покрытия кода. Экосистема SQL-разработки выглядит на этом фоне скромно: вот sqlproj, который выдаст dacpac для деплоя, а в остальном полагайтесь на себя.
Фреймворк Microsoft SSDT предлагает структурированное хранение исходников базы данных для SQL Server, а вместе с этим инструмент для автоматизации развёртывания. Но вначале исходники должны храниться в VCS, а не на инстансе СУБД. Как же этого добиться, если по сей день доводится слышать от участника разработки проекта БД с активным программированием развесистых хранимых процедур, что система контроля версий бессмысленна, поскольку предыдущую версию кода возможно поднять из бэкапа БД...
Нет исходников — невозможно проводить код-ревью в общем понимании этого процесса, отсутствует прозрачная история изменений, невозможно построение цепочки CI/CD. Без конвейера непрерывной интеграции некуда встроить статический анализ кода и юнит-тесты так, чтобы они гарантированно проверяли конкретное состояние исходников. Как следствие, зрелость процессов разработки безальтернативно остаётся на невысоком уровне.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





