我有一个巨大的脚本传递JSLint(包括避免所有坏的部分).除了一个延伸,这是一个非常复杂的混淆代码嵌入在更大的上下文中.JSLint对这一部分产生了相当多的抱怨,我想为这段代码选择性地禁用它.我已经选择使用了
/*jlsint xxx:true/false*/
Run Code Online (Sandbox Code Playgroud)
指令禁用某些微小代码的特定警告,这些代码执行与结构解释相反的操作.
我使用的混淆代码使用了我不知道是否可以禁用的构造.
例如:
for(L=(117.>
Run Code Online (Sandbox Code Playgroud)
导致此消息:
Problem at line 1 character 57: A trailing decimal point can be confused with a dot '117.
Run Code Online (Sandbox Code Playgroud)
当然,我知道我可以清理代码,但它是从混淆器发出的,我真的不想要清理混淆代码!
那么,有没有办法告诉JSLint完全忽略拉伸代码?
我知道这个查询JSLint:控制注释(选择性忽略)但它没有得到解答.
如果您愿意,您可以自己将其添加到 JSLint 中,尽管这有点邪恶。
这是当前版本的一种快速但肮脏的方法:
我要采取的路线是劫持token函数的样式注释switch块/*。当前位于第 1276 行:
case '/*':
for (;;) {
i = source_row.search(lx);
...
Run Code Online (Sandbox Code Playgroud)
让我们更改它以查找看起来像/*ignore:true */单独一行的注释(尽管从技术上讲,true在这种情况下,一半可以位于该行的任何位置,但该/*ignore:false */行必须单独位于一行,所以让我们假设这两者都成立) 。
错误的 lint 失败代码示例:
function spam()
{
var sand = "sand";
/*ignore:true */
var spud = "spud";
/*ignore:false */
window.console.log(sand);
}
Run Code Online (Sandbox Code Playgroud)
如果找到/*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;
Run Code Online (Sandbox Code Playgroud)
这很丑陋,但似乎有效。
现在这可能会导致问题。例如,如果您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);
}
Run Code Online (Sandbox Code Playgroud)
所以这类事情可能会变得令人讨厌。
我只会在你被迫愚蠢地检查所有内容的情况下使用它,但由于某种原因你没有能力修复每个文件中的内容,尽管你确实有能力编辑它,奇怪的是,在这种情况下,代码被混淆了。整件事ignore太肮脏了。
我需要在 JSLint 内部花费更多时间才能了解它的真正工作原理,但该next_line()功能似乎是非破坏性的。也就是说,您可以(并且应该)使用do_jslint()“真实”/*jslint ignore:true */样式指令在函数中处理此问题,但是在调用该函数时您必须处理副作用advance()。我在这里使用的 hack 更容易,但也更丑陋。
| 归档时间: |
|
| 查看次数: |
18821 次 |
| 最近记录: |