8

私はいくつかの異なる javascript スニペット (数千) の大きなセットを持っており、それらのいくつかには構文に愚かなエラーがあります (中かっこ/引用符の不一致、javascript 内の HTML、変数名のタイプミスなど)。

JS 構文をチェックする簡単な方法が必要です。JSLint を試してみましたが、スタイル、変数定義の方法などに関する警告が多すぎます (すべてのフラグをオフにしても)。スタイルの問題を見つけたり、JavaScript の品質を向上させたりする必要はありません。明らかな構文エラーを見つける必要があるだけです。もちろん、ブラウザ/ブラウザコンソールで簡単に確認できますが、そのスニペットの数が多いため、自動的に行う必要があります。

追加:
JSLint/JSHint は、'beauty' ではなく機能している (つまり、いくつかの潜在的な問題がある) 行に多くの問題を報告し、通常のコンパイラが単に構文エラーを報告して実行を停止するだけで、実際の問題を確認できません。 . たとえば、4 行目 (引用符の不一致)、6 行目 (カンマが必要)、9 行目 (予期しない <script>) に構文エラーがあるコードを JSLint してみてください。

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;
4

6 に答える 6

2

あまり冗長ではないJSHintを試すことができます。

于 2013-03-28T10:54:44.747 に答える
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 に感謝)。

于 2013-03-28T14:32:39.327 に答える
0

使うだけnode --check filename

于 2021-12-05T12:34:01.813 に答える
0

キャプチャしたいJSLint エラーの完全なリストがある場合は、多くのオプションがあります。

JSLint のコードは実際には非常に優れており、かなり理解しやすいものです (質問から、JavaScript についてかなりよく知っていると思います)。ハッキングして、必要なものだけをチェックし、エラーがいくつ見つかっても続行することができます。

また、Node.js で何かをすばやく記述して、JSLint をそのまま使用して、すべてのファイル/スニペットをすばやくチェックし、重要なエラーのみを出力することもできます。

于 2013-03-28T20:59:42.817 に答える
-1

Semantic Designs (私の会社) の JavaScript フォーマッタは、JS ファイルを読み込んでフォーマットします。フォーマット部分は必要ありません。

フォーマットするファイルを読み取るために、完全な構文チェックを行う完全な JavaScript パーサーを使用します (正規表現内であっても)。これを実行してフォーマットされた結果を単純に無視すると、構文チェッカーが表示されます。

ファイルの大きなリストを指定すると、それらすべてがフォーマットされます。これを使用して、大きなセットをバッチチェックできます。(構文エラーがある場合は、0 以外のエラー ステータスをシェルに返します)。

于 2013-03-28T14:42:19.463 に答える