检查/验证javascript语法的简单方法

时间:2013-03-28 10:49:50

标签: javascript syntax jslint jshint

我有一些不同的javascript-snippets(几千个),其中一些在语法上有一些愚蠢的错误(比如不匹配的大括号/引号,javascript中的HTML,变量名中的拼写错误)。

我需要一种简单的方法来检查JS语法。我已经尝试过JSLint,但它发送了太多关于样式,变量定义方式等的警告(即使我关闭所有标志)。我不需要找出样式问题,或者提高javascript质量,我只需要找到明显的语法错误。当然我可以在浏览器/浏览器控制台中查看它,但我需要自动执行它,因为该片段的数量很大。

添加
JSLint / JSHint报告了很多问题,这些问题不是“美”但是有效(即有一些潜在的问题),并且看不到真正的问题,普通编译器只会报告语法错误并停止执行。例如,尝试使用JSLint代码,该代码在第4行(不匹配的引号),第6行(需要逗号)和第9行(意外< script>)上有语法错误。

document.write('something');
a = 0;
if (window.location == 'http://google.com')  a = 1;
document.write("aaa='andh"+a+"eded"');
a = {
  something: ['a']
  something2: ['a']
};
<script>
a = 1;

5 个答案:

答案 0 :(得分:2)

你可以尝试JSHint,这不那么冗长。

答案 1 :(得分:1)

我发现SpiderMonkey能够编译脚本而不执行它,如果编译失败 - 它会输出错误。

所以我刚为SpiderMonkey创建了小包装器

sub checkjs {
    my $js = shift;
    my ( $js_fh, $js_tmpfile ) = File::Temp::tempfile( 'XXXXXXXXXXXX', EXLOCK => 0, UNLINK => 1, TMPDIR => 1 );
    $| = 1;
    print $js_fh $js;
    close $js_fh;
    return qx(js -C -f $js_tmpfile 2>&1);
}

javascriptlint.com在我的情况下也非常好。 (感谢@rajeshkakawat)。

答案 2 :(得分:1)

万一有人还在寻找你可以试试Esprima

它只检查语法,没有别的。

答案 3 :(得分:0)

如果您有想要捕获的JSLint错误的详尽列表,那么有很多选项。

JSLint的代码实际上非常好并且相当容易理解(我假设你已经从你的问题中很好地了解了JavaScript)。你可以破解它只检查你想要什么,并且无论发现多少错误都可以继续。

您还可以在Node.js中快速编写内容,以便按原样使用JSLint快速检查每个文件/片段,并仅输出您关心的错误。

答案 4 :(得分:-1)

Semantic Designs'(我的公司)JavaScript格式化程序读取JS文件并格式化它们。您不需要格式化部分。

要读取它将格式化的文件,它使用完整的JavaScript解析器,它会进行完整的语法检查(甚至在正则表达式中)。如果您运行它并且只是忽略格式化结果,那么您将获得语法检查器。

你可以给它大的文件列表,它会格式化所有文件。您可以使用它来批量检查您的大型集。 (如果存在任何语法错误,则会向shell返回非零错误状态。)