如果你愿意,你可以自己将它添加到 JSLint,尽管那是边缘 Evil。
这是当前版本的一种快速而肮脏的方式:
我将采取的路线是劫持token
函数的样式注释switch
块。/*
目前在第1276 行:
case '/*':
for (;;) {
i = source_row.search(lx);
...
让我们更改它以查找看起来像是单独/*ignore:true */
一行的注释(尽管从技术上讲,true
在这种情况下,一半可以在线上的任何位置,尽管该/*ignore:false */
行必须单独一行,所以让我们假设两者都成立) .
错误的 lint 失败代码示例:
function spam()
{
var sand = "sand";
/*ignore:true */
var spud = "spud";
/*ignore:false */
window.console.log(sand);
}
如果我们找到/*ignore:true */
了,让我们跳过行,直到我们找到行中第一个字符为/*ignore:false */
with/*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_Haked 将抱怨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);
}
所以那种东西可能会变得讨厌。
而且我只会在你被迫对所有内容进行 lint 的情况下使用它,但由于某种原因,你没有能力修复每个文件中的内容,尽管你确实有能力编辑它,奇怪的是,因为在这种情况下使用混淆代码。这整件事ignore
很糟糕。
我需要花更多时间在 JSLint 中了解它的真正工作原理,但该next_line()
功能似乎是非破坏性的。也就是说,您可以do_jslint()
(并且应该)使用“真实”样式指令在函数中处理这个问题,但是当您调用该函数/*jslint ignore:true */
时,您必须处理副作用。advance()
我在这里使用的 hack 更容易,但也更丑陋。