foundation
Lint
Запускайте семантические и стилевые проверки единообразно, чтобы review фокусировался на поведении, а не на механических замечаниях.
Lint в CI превращает повторяемые правила качества кода в объективный merge gate. В зависимости от toolchain он покрывает imports, React hooks, accessibility, мёртвый код, подозрительные паттерны и интеграцию с форматтерами.
| Слой | Типичный инструмент | |------|---------------------| | Форматирование | Prettier, Biome format | | Семантический lint | ESLint, Biome lint | | Type-aware lint | `typescript-eslint` с `project` |
{
"scripts": {
"lint": "eslint . --max-warnings 0",
"format:check": "prettier --check ."
}
}
Сильные пайплайны запускают форматирование и семантический lint отдельными шагами, чтобы падения были понятны. CI — авторитет для механических проверок; локальные hooks — удобство, а не единственный gate.
На интервью: разделение formatter и semantic lint, когда type-aware lint оправдан по стоимости, `--max-warnings 0` в CI и читаемость сообщений об ошибках.
Типовые ошибки: шумный lint, который команда обходит; дорогой type-aware lint без кэша; дублирование правил Prettier в ESLint.
Компромисс — полнота проверок против latency feedback и терпимости к шуму правил.
Чеклист:
- Правила полезны и actionable.
- Форматирование отдельно или последовательно.
- CI авторитетен для механических проверок.
- Измеряйте и кэшируйте медленные lint-пути.