我根据JSLint标准进行编码(不包括几个选项),我认为将其用于我的浏览器内单元测试可能是一个好主意,这样我就不会意外地提交任何不通过它的东西。我正在使用QUnit,但同样可以应用于任何浏览器内的测试框架。
我首先尝试了这段代码:
test("code passes JSLint", function () {
var i, options;
options = {
browser : true,
plusplus : true,
unparam : true,
maxlen : 120,
indent : 4
};
// in QUnit `ok` is the equivalent of `assertTrue`
ok(JSLINT(this.code, options));
// Help me out a bit if it fails
for (i = 0; i < JSLINT.errors.length; i++) {
console.log(JSLINT.errors[i].line + ': ' + JSLINT.errors[i].reason);
}
});
修改:忘记提及,我在设置中声明了this.code = myFunction.toString();
。
在Chrome中效果很好,所以我承诺并继续快速编码。当我在FF中尝试它时,我发现FF在将它们转换为字符串时似乎剥离了函数中的所有空格,因此它失败了。
我在本地进行编码和测试,因此使用AJAX下载JS文件并不是一个真正的选择。谁能想到更好的选择,还是只是浪费时间? (忽略JSLint作为一个整体的优点或缺点,请...那是为了另一个讨论)
答案 0 :(得分:1)
您的开发环境是什么? Jslint可以集成到常见的IDE中,比如Eclipse和(我很确定)Visual Studio。我认为这是一个更好的选择,然后将它放入你的单元测试,即使它在单元测试中完美运行。
否则坚持使用单元测试方法,如果在Chrome中,你可以设置条件只运行Jslint测试 - Jslint检查的东西不需要在多个浏览器中测试。
答案 1 :(得分:1)
奇怪的是,我看到了相反的行为(在chrome [v17.0.x]中失败,在FF [v10.0.1]中传递)。无论哪种方式,另一种解决方案是告诉JSLINT不要担心white:true
<script src="http://coffeescript.org/extras/coffee-script.js"></script>
<script src="https://github.com/douglascrockford/JSLint/raw/master/jslint.js"></script>
<script src="http://code.jquery.com/qunit/qunit-1.10.0.js"></script>
<script>
function myCode(){window.console.log("I have no whitespace");}
</script>
<script type="text/coffeescript">
test "Code is LINT'able", ()->
options =
browser:true
white:true #don't worry about whitespace
sloppy:true #allow missing "use strict"
ok JSLINT(myCode.toString(), options)
JSLINT.errors.forEach (error)->
console.log "#{error.line}: #{error.reason}"
</script>