У Notepad++ есть плагин JSLint. Его можно установить из менеджера плагинов (Плагины  -> Plugin Manager ->
Show Plugin Manager -> JSLint -> Install
). Когда я первый раз его установил то не мог нарадоваться. Он позволил мне писать очень красивый код по канонам. Но, радость моя была недолгой. Через пару обновлений NPP, плагин перестал работать. Его автор быстро написал фикс обновление. Я его установил (из плагин менеджера оно недоступно). Но теперь плагин стал глюканатом натрия в кубе. Никакие настройки не позволяли убрать некоторые ошибки. Пример: я исторически привык использовать tab вместо пробелов. Однако сообщество по известной причине (http://www.jslint.com/help.html#new) отвергает табы и использует 4-е пробела. Это их право, вопросов нет. Но я использую табы. И вот этот плагин мне говорит, что я должен использовать пробелы место табов. Это поведение отключается директивой white: true, но эта же директива отвечает и за то, чтобы не было лишних пробелов, к примеру перед переносом строки. Раньше онон мне говорило, что там намешаны пробелы с табами. Теперь либо то либо это. Это к плагину NPP никакого отношения не имеет. Проблема плагина в том, что он очень не чутко реагирует на изменение настроек. Иногда практически не реагирует. Поэтому, вот нашел решение, которое использует связку NodeJS  и JSLint модуль через NppExec плагин.

  1. Устанавливаем NPPExec (Плагины-> Plugin Manager -> Show Plugin Manager -> NPPExec -> Install).
  2. Устанавливаем NodeJS, если вы этого еще не сделали
  3. Устанавливаем JSLint, пуск -> выполнить -> cmd: >npm install -g jslint
  4. Жмем F6 в NPP или выбираем подменю Плагины> NppExec >Execute... и вставляем в поле следующее:
    NPP_SAVE
    cmd /K (CD "$(CURRENT_DIRECTORY)" && jshint "$(FILE_NAME)" && exit) || exit
  5. Жмем Save и задаем имя для этой команды, к  примеру Run JSLint.
  6. Жмем в меню Plugins>NppExec>Advanced options... ставим галку Place to the Macros submenu. В списке Associated script выбираем названный нами сниппет(смотрите шаг 5) . В текстовом поле Item name вы может установить имя команды в  подменю Макросы.
  7. Теперь вы можете назначить горячие клавиши, для этого сниппета в подменю  Макросы>Изменить гор. клавишы/удалить макро..., во вкладке Plugins commands.

Надеюсь, что это кому-нибудь поможет.

Результат будет такой:

jslint-notepadplusplus.png

С настройками дело обстоит несколько сложнее. Да, можно их указывать прямо в коде. К примеру так

/*global jQuery,window*/
/*jslint white: true*/

Но такой мусор в коде меня несколько раздражает. . Кроме того, почти во всех моих скриптах используется jQuery, и каждый раз указывать, что и для чего не очень хочется.

Поэтому создаем где-нибудь тут c:\Program Files\nodejs\node_modules\ файл .jslint.conf (название папки и файла могут быть иными) и засовываем все необходимые настройки в него. 

К примеру так

{
 "predef" : "Jodit,jQuery",
 "white": true
}

Далее, надо изменить код запуска jslint. Жмем F6 и меняем скрипт, добавляя путь до файла конфигурации

NPP_SAVE
cmd /K (CD "$(CURRENT_DIRECTORY)" && jslint "$(FILE_NAME)" --config "c:\Program Files\nodejs\node_modules\.jslint.conf" && exit) || exit

Все

Приведу еще список доступных опций. Очень скудно почему-то все это описано в документации

 

ОпцияОзначает
adsafe true смотрите http://www.ADsafe.org/ 
bitwise true если хотите разрешить побитовые операции подробнее
browser true стандартные браузерные переменные будут переопределены (window, document, setTimeout) подробнее
cap true названия тегов можно писать в любом регистре.
continue true нужная опция, позволяет использовать в циклах continue
css true  подробнее
debug true можно использовать debugger в своем коде. Кто не знает, если открыть отладчик браузера (F12) то на месте этой комманды автоматически будет создана точка останова. Штука весьма полезная когда ваши скрипты слишком большие и ставить точки останова вручную проблематично. Или к примеру при отладке подобных inline обработчиков <button type="button" onclick="debugger; alert(1)">. Ясно, что в продакшен такие команды надо убирать.
devel true всякие глобальные отладочные штуки будут доступны. подробнее
eqeq true  Позволяет использовать == и != место строгих === и !== Если не знаете, для чего это вообще надо просто ответьте на вопрос, что будет возвращено тут console.log(false == null);  console.log(false == !null);
es5 true разрешить ES5 синаксис. Всякие штуки типа стрелочных функций и т.д.
evil true Есть хорошая фраза eval is evil, но как в анекдоте - случаи бывают разные. подробнее
forin true разрешить использовать конструкцию for ( in ). подробнее Раньше оно разрешало использовать через hasOwnProperty, но такая нотация означало что цикл будет в любом случае перебирать все метода и свойства объекта, будь то методы и свойства прототипа или нет. Это может сильно замедлить работу скрипта. Поэтому используем Object.keys() и обычный цикл с итератором 
fragment true разрешить использование HTML фрагментов. подробнее
indent Число символов для tab (по умолчанию 4).
maxerr Сколько максимально ошибок выводить в консоли (по умолчанию 50)
maxlen Максимальное количество символов в строке
newcap true Разрешить использование конструкторов не с заглавной буквы. подробнее
node true всякие глобальные штуки из Node.js будут глобально предопределены. more about node
nomen true разрешить использования знака нижнего подчеркивания в названиях переменных
on true разрешить inline обработчики в html коде подробнее
passfail true Не показывать все ошибки, а остановится на первой.
plusplus true разрешить операторы инкремента и декремента ++ и -- подробнее  Знающие люди люди говорят, что код весьма не читабельный и может потом модифицироваться под вирус. Поэтому лично я перешел на i += 1
predef Предопределенные глобальные объекты. Засовываем сюда все классы, которые используем из разных файлов, к примеру jQuery
regexp true когда программист говорит что эту проблему можно решить используя регулярные выражения то это значит ровно одно, у программиста теперь две проблемы. Эта старая шутка, как нельзя лучше отражает регулярные выражения. Неумелое использование операторов в нем, может существенно замедлить ваш скрипт.
rhino true штуки из Rhino будут предопределены. подробнее
safe true
sloppy true использовать 'use strict';  отключать эту опцию не следует. Код становится значительно понятнее с ней
stupid true 
sub true
undef true if variables and functions need not be declared before used. more about undef
unparam true разрешить не используемые параметры в методах и функциях. Очень полезная опция если у вас много универсальных многоцелевых функций. Или в обработчиках, когда точно не знаешь, какие параметры тебе понадобятся в будущем.
vars true разрешить использование нескольких var в одной области видимости подробнее
white true Очень занятная опция. Во первых она запрещает использование табов и разрешает только пробелы. Но отключать ее не рекомендую, потому что она находит все лишние пробелы и отступы, там где они не нужны. Код становится очень аккуратным. Я таки перешел на пробелы место табов.
widget true подробнее
windows true Всякие глобальные штуки будут предопределены подробнее
Рассказать друзьям

Добавить комментарий


Защитный код
Обновить