RÉPONSE MIS À JOUR, 2017: Oui. Utilisez ESLint. http://eslint.org
En plus de JSLint (déjà mentionné dans la réponse de Flash Sheridan ) et du compilateur Closure (précédemment mentionné dans la réponse de awhyte ), j'ai également tiré beaucoup d'avantages de l'exécution de JSHint et de PHP CodeSniffer . Depuis 2012, les quatre outils sont gratuits et open-source et ont derrière eux une grande communauté de développeurs active. Ils sont chacun un peu différents (et je pense, complémentaires) dans les types de contrôles qu'ils effectuent:
JSLint a été conçu pour être et est toujours l'outil de peluchage personnel de Douglas Crockford. Il est livré avec un excellent ensemble de règles par défaut - celui de Crockford, constamment mis à jour alors qu'il continue à en apprendre davantage sur JavaScript et ses pièges. JSLint est très opiniâtre et cela est généralement considéré comme une bonne chose. Ainsi, il y a (intentionnellement) une quantité limitée que vous pouvez faire pour configurer ou désactiver des règles individuelles. Mais cela peut rendre difficile l'application de JSLint au code hérité.
JSHint est très similaire à JSLint (en fait, il a commencé sa vie en tant que fork de JSLint) mais il est plus facile / possible de configurer ou de désactiver toutes les vérifications de JSLint via les options de ligne de commande ou via un .jshintrc
fichier .
J'aime particulièrement pouvoir dire à JSHint de signaler toutes les erreurs d'un fichier, même s'il y a des centaines d'erreurs. En revanche, bien que JSLint ait une maxerr
option de configuration, il sera généralement renfloué relativement tôt lors de la tentative de traitement de fichiers contenant un grand nombre d'erreurs.
Le compilateur Closure est extrêmement utile dans la mesure où, si le code ne se compile pas avec Closure, vous pouvez vous sentir très certain que ledit code est profondément arrosé d'une manière fondamentale. La compilation de clôture est peut-être la chose la plus proche du monde JS d'une vérification de syntaxe "interpréteur" comme php -l
ouruby -c
Closure vous avertit également des problèmes potentiels tels que des paramètres manquants et des variables non déclarées ou redéfinies. Si vous ne voyez pas les avertissements attendus, essayez d'augmenter le niveau d'avertissement en appelant Closure avec une option de--warning_level VERBOSE
PHP CodeSniffer peut analyser JavaScript ainsi que PHP et CSS. CodeSniffer est livré avec plusieurs normes de codage différentes, (disons phpcs -i
pour les voir) qui incluent de nombreux sniffs utiles pour le code JavaScript, y compris des vérifications par rapport aux structures de contrôle en ligne et aux espaces superflus .
Voici une liste des sniffs JavaScript disponibles dans PHP CodeSniffer à partir de la version 1.3.6 et voici un ensemble de règles personnalisées qui vous permettrait de les exécuter tous en même temps. À l'aide de jeux de règles personnalisés, il est facile de choisir les règles que vous souhaitez appliquer. Et vous pouvez même écrire vos propres sniffs si vous souhaitez appliquer un "style maison" particulier qui n'est pas pris en charge par défaut. Afaik CodeSniffer est le seul des quatre outils mentionnés ici qui prend en charge la personnalisation et la création de nouvelles règles d'analyse statique. Une mise en garde cependant: CodeSniffer est également le plus lent de tous les outils mentionnés.