Перейти до вмісту

Встановила стандарт якості без жодних попереджень для шести мов — Go, TypeScript, SQL, Python, Shell і Markdown — дотримання якого забезпечували pre‑commit hooks.

шість мов без жодного попередження

Ситуація. Попередження, що накопичуються, непомітно роз’їдають якість. Кожне проігнороване діагностичне повідомлення трохи знижує планку, і щойно збірка видає їх із сорок, їх уже ніхто не читає, а справжня проблема лежить у цьому списку в усіх на виду, бо «попередження» перетворилися на фоновий шум. У багатомовній кодовій базі джерел шуму, через які таке стається, ще більше.

Завдання. Репозиторію потрібна була одна безкомпромісна планка якості для всіх мов, щоб проблеми виправлялися, а не накопичувалися.

Дія. Запроваджено політику нульових попереджень, а її дотримання забезпечує інструментарій: політика, що покладається на пильність кожного, програє першому ж напруженому тижню. Кожне діагностичне повідомлення лінтера вважається помилкою — рівня «warn», за яким можна сховатися, немає, — і так у всьому стеку: Go з golangci‑lint, TypeScript з ESLint, SQL з SQLFluff, Python з Ruff, shell з ShellCheck, Markdown з markdownlint. Придушувати діагностику прямо в коді заборонено, тож замаскувати її не вийде — проблему доводиться справді виправляти. Pre‑commit- і pre‑push‑хуки запускають лінтери й тести, тож коміт, який приніс би проблему, взагалі не з’являється. Є навіть обмеження на довжину функцій і файлів, щоб модулі не розросталися настільки, що їх уже важко читати.

Результат. Проблеми виправляються там, де виникають, а не відкладаються в беклог, який ніхто не розчищає, і кодова база лишається чистою за замовчуванням, а не завдяки періодичним героїчним зусиллям. Стандарт однаковий незалежно від мови, і тримає його інструментарій, а не чиясь сила волі, — тому він справді тримається.

Одна частина довшого переліку — і він увесь на цьому сайті.

Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.

Переглянути весь перелік