我喜欢JSLINT背后的想法,但有时它有点太严格,在我看来是不必要的。
最近我找到了JSHINT。它更灵活,允许更多选项打开或关闭。
但JSHINT在我认为正确的代码上抛出错误。例如,JSHINT barfs就有自己的代码。如果我在JSHINT.js上运行JSHINT,它会给我这个:
我不明白。查看该图像底部附近的错误消息? JSHINT似乎希望缩进与它不同。它没有抱怨缺乏卷曲。我有curly:false
表示如果声明不要求围绕单行的卷曲。
奇怪的是,JSHINT.js源代码在任何地方都使用了4个空格的缩进,但它只会为这几行输出有关缩进的错误。为什么?
我这样做错了吗?还有其他我应该配置的东西吗?
已编辑 - 最初我一直在使用JSHINT,我将combine()
调用与if语句放在同一行。我已经将JSHINT代码恢复到原来的状态,以显示错误仍然存在。
这是通过JSHINT使用以下选项完成的:
options = {
curly : false, // no curly fascism
wsh : true, // WScript is allowed
white : true, // true: 'sloppy' whitespace is ok
plusplus : false, // false == ok to use ++
passfail : false // do not stop after first error
//radix : true // do not puke on parseInt() with no radix
};
EDIT2
这是一个gif,它显示了原始形式的JSHINT真正需要的东西。当红色高光消失时,这意味着JSHINT对该特定线感到高兴。 (这是在emacs中使用flymake-for-jslint)。
正如你所看到的,如果我以奇怪的方式缩进线条,JSHINT会放松。
我认为答案在this github issue。我修改了JSHINT,第2264行,如下所示:
***************
*** 2256,2262 ****
--- 2261,2270 ----
nexttoken, '{', nexttoken.value);
noreach = true;
+ // cheeso - fix for https://github.com/jshint/jshint/issues/87
+ indent += option.indent;
a = [statement()];
+ indent = old_indent;
noreach = false;
}
...它停止抱怨自己的格式。
答案 0 :(得分:2)
JSHint维护者在这里。根据您的屏幕截图,它会出错,因为combine
与您的if
子句位于同一行,这违反了white
选项的规则。
你确定你的JSHint副本没有被任何人修改过吗?我们有JSHint的单元测试,其中一个测试检查JSHint自己的源代码。而且,正如您从附带的示例中看到的那样,一切都过得很好。
答案 1 :(得分:0)
我认为答案在[这个github问题] [4]。我修改了JSHINT,第2264行,如下所示:
***************
*** 2256,2262 ****
--- 2261,2270 ----
nexttoken, '{', nexttoken.value);
noreach = true;
+ // cheeso - fix for https://github.com/jshint/jshint/issues/87
+ indent += option.indent;
a = [statement()];
+ indent = old_indent;
noreach = false;
}
...它停止抱怨自己的格式。