RÉPONSE ACTUALISÉE, 2017 : Oui. Utilisez ESLint. http://eslint.org
En plus de JSLint (déjà mentionné dans Réponse de Flash Sheridan ) et le Compilateur de fermetures (précédemment mentionné dans La réponse de awhyte ) J'ai également tiré beaucoup de bénéfices de la course à pied. JSHint y PHP CodeSniffer . Depuis 2012, ces quatre outils sont gratuits et open-source et bénéficient d'une communauté de développeurs importante et active. Ils sont tous un peu différents (et, je pense, complémentaires) dans les types de vérifications qu'ils effectuent :
JSLint a été conçu pour être, et est toujours, l'outil de linting personnel de Douglas Crockford. Il est livré avec un grand default ruleset -- le propre de Crockford, constamment mis à jour comme il continue d'apprendre sur JavaScript et ses pièges. JSLint est très opiniâtre et c'est généralement considéré comme une bonne chose. Il y a donc (intentionnellement) un quantité limitée vous pouvez faire pour configurer ou désactiver les règles individuelles. Mais cela peut rendre difficile l'application de JSLint au code existant.
JSHint est très similaire à JSLint (en fait, il a commencé la vie que JSLint fork) mais il est plus facile/possible de configurer ou désactiver toutes les vérifications de JSLint via des options de ligne de commande ou via un fichier .jshintrc
fichier .
J'aime particulièrement le fait que je puisse dire à JSHint de rapporter todo des erreurs dans un fichier, même s'il y a des centaines d'erreurs. En revanche, bien que JSLint dispose d'une fonction maxerr
il s'arrête généralement relativement tôt lorsqu'il tente de traiter des fichiers contenant un grand nombre d'erreurs.
Le compilateur Closure est extrêmement utile dans la mesure où, si le code ne le fera pas compiler avec Closure, vous pouvez être certain que ledit code es profondément malmené de manière fondamentale. La compilation des fermetures est probablement ce qui se rapproche le plus, dans le monde des JS, d'un contrôle syntaxique de type "interpréteur". php -l
o ruby -c
Fermeture également vous avertit des problèmes potentiels tels que les paramètres manquants et les variables non déclarées ou redéfinies. Si vous ne voyez pas les avertissements auxquels vous vous attendez, essayez d'augmenter le niveau d'avertissement en invoquant Closure avec une option de --warning_level VERBOSE
PHP CodeSniffer peut analyser le JavaScript ainsi que PHP et CSS. CodeSniffer est livré avec plusieurs normes de codage différentes, (par exemple phpcs -i
pour les voir) qui comprennent de nombreuses vérifications utiles pour le code JavaScript, y compris des vérifications contre les éléments suivants structures de contrôle en ligne y espaces blancs superflus .
Voici un liste des sniffs JavaScript disponible dans PHP CodeSniffer à partir de la version 1.3.6 et voici une des règles personnalisées qui vous permettraient de les exécuter tous en même temps. En utilisant des jeux de règles personnalisés, il est facile de choisir les règles que vous voulez appliquer. Et vous pouvez même écrivez vos propres sniffs si vous voulez imposer un "style maison" particulier qui n'est pas supporté par la boîte. À ma connaissance, 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 aussi le plus lent de tous les outils mentionnés.
1 votes
Aujourd'hui, typescript est votre ami - il supporte la vérification implicite des types en javascript et si vous voulez aller à 100%, vous pouvez écrire des annotations jsdoc3 ou google closure et il déduira les types à partir de là. Des éditeurs comme vscode ou webstorm le supportent d'emblée : github.com/Microsoft/TypeScript/wiki/