Пользователи JSLint все больше недовольны тем, насколько строгими и авторитарными стали его правила и реализация. Теперь у вас есть выбор — JSHint — это мягкая альтернатива, которая дает вам варианты стиля вашего кода.
Если вы программист на JavaScript, который серьезно относится к работе с языком, вы наверняка будете знать и использовать JSLint Дугласа Крокфорда, средство проверки стиля, которое может выявить плохое использование. Однако JavaScript — настолько гибкий язык, что вы можете не согласиться со стилями, которые JSLint применяет. Например, JSLint всегда отмечает:
оператор if (cond);
как ошибку, потому что он применяет правило, согласно которому оператор должен быть в фигурных скобках. Хотя есть веские аргументы в пользу этого стиля — он менее подвержен ошибкам — вам не нужно соглашаться.
Теперь у вас есть реальный выбор.
Новый инструмент под названием JSHint — это ответвление JSLint, разработанное для обеспечения большей гибкости при проверке JavaScript. Можно сказать, что он пытается заставить вас выбрать хороший стиль, а не чей-то другой.
JSHint — это проект с открытым исходным кодом, и вы можете загрузить его с http://jshint.com/. Он работает как глобальная функция и принимает, помимо исходного кода, набор параметров, определяющих, какие «ошибки» будут помечены. Вы можете опробовать его в интерактивном режиме на сайте JSHint и изменить параметры, чтобы увидеть, как работает ваш код.
На сайте объясняется, зачем понадобилась вилка:
JSHint — это форк JSLint Дугласа Крокфорда, который не тиранизирует ваш код. Он предназначен для обнаружения ошибок, которые на самом деле нарушают ваш код, при этом пропускаются вещи, которые, по словам Крокфорда, «вносят ошибки в проекты». Другими словами, JSHint — это ответвление JSLint для реального мира, где люди используют разные стили и соглашения.
Наиболее важным отличием является то, что JSHint разрабатывается и поддерживается сообществом разработчиков JavaScript, а не одним очень самоуверенным человеком.
Недавно JSLint эволюционировал, чтобы включить поддержку строгого режима, который вводится с ECMAScript 5, и негибкий способ, которым он это делает, вызывает некоторые трения в сообществе JSLint.
Еще одним приятным дополнением является то, что вы можете указать JSHint среду JavaScript, в которой будет работать ваш код — браузер, ES5, Node.js или Rhino.
В целом у JSHint есть много преимуществ, и его не сложнее использовать. Обидно, когда проект разветвляется таким образом — это создает путаницу и ослабляет усилия — но в данном случае это кажется правильным поступком.