Les programmes JavaScript peuvent être vérifiés pour les erreurs dans les IDE ou en utilisant applications Web en ligne mais je cherche un moyen de détecter les erreurs de syntaxe seul .
J'ai essayé JSLint et JSHint et j'ai regardé leurs options mais je n'ai pas pu trouver une combinaison qui exclurait les avertissements et montre juste les erreurs de syntaxe .
Comment puis-je vérifier le code JavaScript pour les erreurs de syntaxe uniquement à partir de la ligne de commande?
La solution consiste à activer l'option --verbose
De jshint, qui affiche le code d'erreur ou d'avertissement (par exemple E020
Pour Expected '}' to match '{'
Ou W110
Pour Mixed double and single quotes
), puis grep pour les erreurs uniquement:
jshint --verbose test.js | grep -E E[0-9]+.$
J'utilise acorn
:
$ acorn --silent tests/files/js-error.js; echo $?
Unexpected token (1:14)
1
$ acorn --silent tests/files/js-ok.js; echo $?
0
Installer via: npm -g install acorn
.
JSHint fait ce que vous voulez. http://www.jshint.com/
Vous pouvez configurer les avertissements ou les erreurs à afficher.
Un exemple:
$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.
1 error
Tout analyseur JavaScript devrait faire l'affaire, acorn
mentionné par @cweise est Nice car il est rapide et possède un --silent
commutateur.
Vous pouvez également utiliser esvalidate
à partir du package npm 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
Voici une réponse pour un scénario d'intégration continue.
1- Vérifie tous les fichiers JavaScript avec les fonctionnalités d'exclusion de dossier, sous-dossier et fichier.
2- Quittez en cas d'erreur.
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;
J'ai eu le même problème, mais j'avais également besoin de valider des problèmes spécifiques à IE8 et de valider le code js dans les fichiers html, aspx, ascx et cshtml.
J'ai créé un outil de console open source simple (basé sur Microsoft.JScript.Compiler), peut-être qu'il peut vous aider. JsParser.Cmd
Il est très facile à utiliser et m'aide à valider le code js dans les tests nunit.