JavaScriptプログラムは、IDEまたは オンラインWebアプリ を使用してエラーをチェックできますが、構文エラーを検出する方法を探していますalone。
私はJSLintとJSHintを試し、それらのオプションを調べましたが、警告と 構文エラーを表示するだけ を除外する組み合わせを見つけることができませんでした。
JavaScriptコードを確認する方法構文エラーのみコマンドラインから?
解決策は、jshintの--verbose
オプション。エラーまたは警告コードを表示します(例:E020
ために Expected '}' to match '{'
またはW110
ために Mixed double and single quotes
)、エラーの場合のみgrep:
jshint --verbose test.js | grep -E E[0-9]+.$
acorn
を使用します:
$ acorn --silent tests/files/js-error.js; echo $?
Unexpected token (1:14)
1
$ acorn --silent tests/files/js-ok.js; echo $?
0
経由でインストール:npm -g install acorn
。
JSHintはあなたが望むことをします。 http://www.jshint.com/
表示する警告またはエラーを構成できます。
例:
$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.
1 error
JavaScriptパーサーはすべて実行する必要があります。@ cweiseが言及するacorn
は、高速で--silent
スイッチ。
Npm esvalidate
パッケージのesprima
を使用することもできます。 http://ariya.ofilabs.com/2012/10/javascript-validator-with-esprima.html =
$ npm install -g esprima
$ esvalidate js-file-with-errors.js
js-file-with-errors.js:1: Invalid left-hand side in assignment
継続的インテグレーションシナリオの答えを次に示します。
1-除外フォルダー、サブフォルダー、およびファイル機能を持つすべてのJavaScriptファイルをチェックします。
2-エラーがある場合は終了します。
esvalidate --version || npm install -g esprima;
find ./ -not \( -path ./exclude_folder_1 -Prune \) -not \( -path ./exclude/sub_folder -Prune \) -not \( -path ./exclude/sub_folder_2 -Prune \) ! -name exclude_specified_file.js -name \*.js -exec esvalidate '{}' \; | grep -v "No syntax errors detected" && echo "Javascript Syntax error(s) detected" && exit 1;
同様の問題がありましたが、IE8固有の問題を検証し、html、aspx、ascx、cshtmlファイルのjsコードを検証する必要もありました。
簡単なオープンソースコンソールツール(Microsoft.JScript.Compilerに基づく)を作成しました。おそらく役立つでしょう。 JsParser.Cmd
非常に使いやすく、nunitテストでjsコードを検証するのに役立ちます。