Вы можете добавить это самостоятельно в JSLint, если хотите, хотя это пограничное зло.
Вот один быстрый и грязный путь с текущей версией:
маршрутом я собираюсь сделать, это угон switch
блока в token
функции для /*
комментариев стиля. Это at line 1276 currently:
case '/*':
for (;;) {
i = source_row.search(lx);
...
Давайте изменим, что искать комментарии, которые выглядят как /*ignore:true */
на линии сами по себе (хотя технически true
половина может быть в любом месте на линии в этом случае, хотя /*ignore:false */
линия имеет к быть на одной линии, так что давайте притворимся, что держится для обоих).
Пример плохо ворс неудачи код:
function spam()
{
var sand = "sand";
/*ignore:true */
var spud = "spud";
/*ignore:false */
window.console.log(sand);
}
Если мы находим /*ignore:true */
, давайте пропустить линии, пока мы не найдем один с /*ignore:false */
с /*ignore:...
как первыми символами на линии. До этого ложного утверждения на отдельной строке мы игнорируем все.
case '/*':
// Opening /* has already been sliced.
if (source_row.startsWith("ignore:true")) {
do {
if (console.log) { console.log(source_row) };
} while (next_line() && !source_row.trim().startsWith("/*ignore:false"));
} else {
// Put in the code that was originally there
}
break;
Это уродливо, но, похоже, работает.
Теперь это может вызвать проблемы. Например, если у вас есть var
объявление в разделе игнорируемых и использовать его позже, JSLint_Hacked будет жаловаться, что myVar was used before it was defined.
Пример:
/*jslint white:true, sloppy:true, browser:true */
function spam()
{
var sand = "spam";
/*ignore:true */
var spud = "spud";
/*ignore:false */
window.console.log(sand + spud);
}
Так что такие вещи могли нахамить.
И я использовал бы это только в тех случаях, когда вы невольно вынуждены возиться со всем, но по какой-то причине у вас нет возможности исправить то, что есть в каждом файле, хотя у вас есть возможность редактировать его , как ни странно, как в этом случае с запутанным кодом. Это всего ignore
вещь waaay захудалый.
Мне нужно больше времени проводить в JSLint, чтобы знать, как это работает, но функция next_line()
кажется неразрушающей. То есть вы могли бы (и должны) обрабатывать это в функции do_jslint()
с помощью «настоящих» директив стиля /*jslint ignore:true */
, но тогда вы должны обрабатывать побочные эффекты, когда вы вызываете функцию advance()
. Хак, который я использую здесь, был намного проще, но также был uglier.
Проверить это [http://stackoverflow.com/questions/599859/jslint-control-comments-selective-ignore/13175495#13175495][1] [1]: HTTP://stackoverflow.com/questions/599859/jslint-control-comments-selective-ignore/13175495#13175495 – napoleonss