Валидация JavaScript кода

Как и в любом языке программирования, в JavaScript есть и хорошее и плохое. В 2008 году Дуглас Крокфорд написал книгу JavaScript: The Good Parts в которой описал каких правил нужно придерживаться чтобы проще было писать на JavaScript понятные, поддерживаемые приложения. А чтобы еще упростить жизнь людям он написал утилиту JSLint. Эта утилита анализирует код и сообщает если он в каком-то месте не соответствует рекомендация крокфорда.

JSLint прекрасно справлялся со своей задачей, но у него было две проблемы: не все рекомендации крокфорда нравились людям, а изменить настройки JSLint было невозможно.

Через некоторое время появлися JSHint. По большому счету это тот же JSLint только с возможностью управлять набором правил по которым валидируется код.

Тройку лидеров замыкает проект JSCS - он сосредоточен на проверке соответствия вашего кода определенному стилю. Существуют готовые наборы пресетов от Airbnb, Google, Yandex и т.д.

Но не так давно появился проект который может подвинуть всех уже известных линтеров. Это ESLint написанный Николасом Закасом. Его основное отличие от предыдущих линтеров в том что он анализирует не текст программ, а предварительно сгенерированное AST-дерево, что дает ему больше возможностей для анализа.

Вторая важная особенность ESLint это возможность выключить любое правило или написать плагин который добавляет новые правила. Например, есть плагины для анализа реактовского JSX кода. Большое количество уже написанных плагинов можно найти здесь https://www.npmjs.com/browse/keyword/eslint-plugin.

До недавнего времени я пользовался связкой JSHint + JSCS. Потом заменил JSHint на ESLint. А недавно понял что набор правил в ESLint полностью покрывают правила JSCS и он становится не нужен.

Осталась одна проблема - среди множества уже опубликованных конфигов не оказалось конфига яндексового, которым я пользовался в jscs. Но его оказалось не трудно написать и я его уже опубликовал - https://www.npmjs.com/package/eslint-config-yandex.

Чтобы им воспользоваться нужно установить его через npm в папке проекта:

npm install --save-dev eslint eslint-config-yandex  

А в корне проекта создать файл .eslintrc

{
  "extends": "yandex",
  "env": {
    "browser": true
  },
  "rules": {
  }
}

Таким образом унаследовавшись от яндексового конфига в своем конфиге вы можете добавлять правила которых в нем нет или переопределять те что в нем указаны.

Полное описание по конфигурированию ESLint можно найти в документации http://eslint.org/docs/user-guide/configuring.