Skip to content

Instantly share code, notes, and snippets.

@vast
Last active February 11, 2016 18:45
Show Gist options
  • Save vast/63cfd42c44fc670b5d1e to your computer and use it in GitHub Desktop.
Save vast/63cfd42c44fc670b5d1e to your computer and use it in GitHub Desktop.
От ненависти до любви. Линтеры в легаси

От ненависти до любви. Линтеры в легаси

— Василий Половнёв





















Зачем и когда?

— чтобы сберечь время и деньги: легче читать, меньше споров про кавычки;
— нельзя начинать поддержку легаси проектов с линтеров;
— сначала освободите разработчиков: автоматизируйте билд (от пуша до деплоя на стейджинг/препрод/продакшен) и внедрите разработку пуллреквестами.





















Что взять?

— Рубокоп для Руби, Еэслинт для Ноды и Джаваскрипта;
— Рубокоп — стандарт, Еэслинт проверяет и стиль кодирования, и проблемы и лучшие подходы;
— У Еэслинта есть готовые настройки "как у крутых пацанов из Эирбнб".





















Как внедрить в CI? Ошибок-то дохера!

— Ленивый линтинг: валит билд лишь тогда, когда ошибок стало больше, чем было;
— Правило бойскаута: поработал с файлом, оставь его чище, чем он был, когда ты пришел. Исправил несколько ошибок линтера, снизил планку.





















А на деле?

Версия покруче в Гистах.

#!/usr/bin/env node

var MAX_ISSUES = 1000;

var CliEngine = require('eslint').CLIEngine;
var cli = new CliEngine();

var report = cli.executeOnFiles(['**/*.js']);
var currentIssuesCount = report.errorCount + report.warningCount;

if (currentIssuesCount > MAX_ISSUES) {
  console.log('Warning limit exceeded: ' + currentIssuesCount + '.');
  console.log('Keep amount of warnings from eslint below ' + MAX_ISSUES + '.');
  process.exit(1);
}




















Как уговорить пацанов?

— вкрутить линтер прямо в Саблайм;
— об этом здорово пишет Даня Абрамов.





















Спасибо!





















Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment