JSLint - 忽略代码段

时间:2010-08-23 18:47:19

标签: jslint

我有一个传递JSLint的巨大脚本(包括避免所有坏的部分)。除了一个延伸,这是一个非常复杂的混淆代码嵌入在更大的上下文中。 JSLint对这一部分产生了相当多的抱怨,我想为这段代码选择性地禁用它。我已经使用了选择性的

  /*jlsint xxx:true/false*/

指令禁用某些微小代码的特定警告,这些代码执行与结构解释相反的操作。

我使用的混淆代码使用了我不知道是否可以禁用的构造。

例如:

for(L=(117.>

导致此消息:

Problem at line 1 character 57: A trailing decimal point can be confused with a dot '117.

当然,我知道我可以清理代码,但它是从混淆器中发出的,我真的不想要清理混淆的代码!

那么,有没有办法告诉JSLint完全忽略拉伸代码?

我知道这个查询JSLint: control comments (selective ignore),但没有回答。

2 个答案:

答案 0 :(得分:12)

我认为这已经在JSHint中修复了一段时间。只需用注释包装代码:

/* jshint ignore:start */
// Code here will be linted with ignored by JSHint.
/* jshint ignore:end */

可以找到文档here并向下滚动到“指令”部分。

答案 1 :(得分:1)

如果你愿意,你可以自己将它添加到JSLint,尽管那是边缘邪恶。

这是当前版本的一种快速而肮脏的方式:

我要采取的路线是劫持token函数switch阻止/*样式评论。这是at line 1276 currently

case '/*':
    for (;;) {
        i = source_row.search(lx);
...

让我们改变它,以便在一行中查找看起来像/*ignore:true */的评论(尽管在这种情况下技术上true一半可以在线上的任何地方,尽管{ {1}}行已经单独排在一行,所以让我们假设两者都成立了。

示例错误,lint-faileding代码:

/*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; 声明,JSLint_Hacked会抱怨var示例:

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); } 事情都是昙花一现。

我需要花更多时间在JSLint中知道它是如何工作的,但ignore函数似乎是非破坏性的。也就是说,你可能(并且应该)在next_line()函数中使用" real" do_jslint()样式指令,但是当你调用/*jslint ignore:true */函数时,你必须处理副作用。我在这里使用的黑客行为要容易得多,但也非常强大。