Il n'existe aucun JavaScript les outils d'analyse statique?
J'ai l'habitude d'avoir mon compilateur me plaindre quand je fais quelque chose de stupide comme une faute de frappe sur un nom de variable, mais le JavaScript a l'habitude de laisser ce passage.
Sont là tout les outils d'analyse statique pour le JavaScript?
- maintenant un jours tapuscrit est votre ami - il prend en charge javascript implicite de la vérification du type et si vous voulez aller à 100%, vous pouvez écrire jsdoc3 ou google fermeture annotations et il va en déduire les types d'. Des éditeurs comme vscode ou webstorm support de la boîte : github.com/Microsoft/TypeScript/wiki/...
Vous devez vous connecter pour publier un commentaire.
Je suis d'accord que JSLint est le meilleur endroit pour commencer. Notez que JavaScript Peluches est distincte de JSLint. Je voudrais aussi proposer de vérifier JSure, qui, à mon test limitée, a fait mieux qu'eux, mais avec quelques bords bruts dans la mise en œuvre—le processeur Intel de la version Mac s'est écrasé au démarrage pour moi, si la version PowerPC a couru bien, même sur Intel, et la version Linux fonctionnait bien ainsi. (Le développeur, Berke Durak, a dit qu'il allait revenir vers moi quand cela a été résolu, mais je n'ai pas entendu parler de lui.)
Ne m'attends pas autant de JavaScript analyse statique que vous obtenez à partir d'un bon C checker. Comme Durak m'a dit, “non-trivial d'analyse est très difficile en raison de Javascript dynamique de la nature.”
(Un autre, encore plus obscur Mac bug, cette fois avec JSLint de Konfabulator widget: en faisant Glisser une BBEdit de l'icône de document sur le widget déplace le document à la corbeille. Le développeur, Douglas Crockford, n'avait pas essayé le widget sur un Mac.)
10 août 2009: aujourd'Hui à la L'Analyse Statique Colloque, Simon Holm Jensen a présenté un document sur TAJS: Type d'Analyseur pour JavaScript, écrit avec Anders Møller et Peter Thiemann. Le document ne mentionne pas les outils ci-dessus, mais Jensen m'a dit qu'il avait regardé certains d'entre eux et il n'était pas impressionné. Le code pour TAJS devrait être disponible dans le courant de cet été.
Mise à JOUR de RÉPONSE, 2017: Oui. Utilisation ESLint. http://eslint.org
En plus de JSLint (déjà mentionné dans Flash de Sheridan répondre) et le Compilateur de fermeture (déjà mentionné dans awhyte réponse) j'ai également reçu beaucoup de bénéficier de l'exécution de JSHint et PHP CodeSniffer. En 2012, tous les quatre outils sont libres et open-source et une grande communauté active de développeurs derrière eux. Ils sont tous un peu différents (et je pense que, complémentaires) dans les types de contrôles qu'ils effectuent:
JSLint a été conçu pour être, et l'est toujours, Douglas Crockford personnels pelucheuses de l'outil. Il est livré avec un grande ensemble de règles par défaut -- Crockford propre, constamment mis à jour comme il continue à apprendre à propos de JavaScript et de ses pièges. JSLint est très opiniâtre et c'est généralement considéré comme une bonne chose. Donc il y a (volontairement) un quantité limitée que vous pouvez faire pour configurer ou désactiver les règles individuelles. Mais cela peut rendre difficile à appliquer JSLint le code hérité.
JSHint est très similaire à JSLint (en fait, il a commencé sa vie comme JSLint fourche) mais il est plus facile/possible de configurer ou désactiver tous de JSLint chèques via les options de ligne de commande ou via un
.jshintrc
fichier.J'aime particulièrement que je peux dire JSHint de rapport tous des erreurs dans un fichier, même si il y a des centaines d'erreurs. En revanche, bien que JSLint a un
maxerr
option de configuration, il vous faudra généralement renflouer relativement tôt lors de la tentative de traiter des fichiers qui contiennent un grand nombre d'erreurs.Le compilateur de Fermeture est extrêmement utile dans le fait que, si le code ne compiler avec Fermeture, vous pouvez vous sentir très à certains dudit code est profondément modifiée dans certains manière fondamentale. Fermeture de la compilation est peut-être la chose la plus proche qu'il y a dans le JS monde à un "interprète" vérification de la syntaxe comme
php -l
ouruby -c
Fermeture aussi vous met en garde sur les problèmes potentiels tels que les paramètres manquants et non déclarées ou redéfinir les variables. Si vous ne voyez pas les mises en garde que vous attendez, essayez d'augmenter le niveau d'avertissement en invoquer la Fermeture avec une option de
--warning_level VERBOSE
PHP CodeSniffer peut analyser JavaScript ainsi que PHP et CSS. CodeSniffer est livré avec plusieurs différentes normes de codage, (dire
phpcs -i
pour les voir), qui comprennent de nombreuses utile renifle pour code JavaScript, y compris les contrôles contre le inline structures de contrôle et les espaces superflus.Ici est un liste de JavaScript renifle disponible en PHP CodeSniffer de la version 1.3.6 et voici une personnalisée jeu de règles qui vous permettent d'exécuter toutes à la fois. en Utilisant des jeux de règles, il est facile de choisir les règles que vous souhaitez appliquer. Et vous pouvez même écrivez votre propre renifle si vous souhaitez appliquer un "style maison" qui n'est pas pris en charge hors de la boîte. Autant que je sache CodeSniffer est le seul outil de quatre mentionnés ici, qui prend en charge la personnalisation et la création de nouvelles analyse statique des règles. Un bémol cependant: CodeSniffer est aussi le plus lent de tous les outils mentionnés.
Google "Fermeture" compilateur JS produit configurable des avertissements et des erreurs à la compilation. Il a certainement mal orthographiés trouve de variables et de méthodes, en plus d'arité des erreurs. Si vous êtes prêt à écrire JsDoc la Fermeture de la voie, il peut faire beaucoup avec des informations de type, trop.
L'YUI "Compresseur" outil peut produire des avertissements trop, mais je n'ai pas encore essayé.
Je n'ai pas eu beaucoup de chance avec le Aptana IDE, construit sur Eclipse, mais d'autres personnes comme elle. Voir Débordement de Pile discussion de JS IDEs.
L'Ide, IDE, ce qui n'est pas gratuit, le dernier que j'ai vérifié, a frickin' excellent JS soutien. Il permet de détecter et de mettre en évidence mal orthographié vars et les méthodes que vous tapez, et plus encore. Il a saisie semi-automatique, trop.
En résumé, JSLint, JSHint, Platon, ESLint, Google Fermeture-Linter sont les outils disponibles.
J'ai fait face à des problèmes d'installation tout en essayant de Google Fermeture-Linter pour Windows. Mais, il est mentionné sur la page web de son soutien pour Windows est expérimental.
J'ai trouvé et essayé un autre outil qui fonctionne bien. Voici le lien pour cela:
http://esprima.org/
Aussi, c'est le github lien pour l'outil Esprima:
https://github.com/ariya/esprima
Vous pouvez voir quelques-uns des outils JavaScript pour l'analyse statique de code dans ce Wiki.
Un outil dans le Wiki, mais ne sont pas mentionnés dans ce post, est DeepScan.
Son but est de trouver des erreurs d'exécution et les problèmes de qualité plutôt que des conventions de codage de linters. Il couvre également Tapuscrit, de Réagir et de Vue.js.
Vous pouvez l'essayer pour votre projet GitHub.
J'ai essayé ESlint et l'a trouvé bon..vous pouvez également ajouter des règles personnalisées de là..Ici, c'est le dépôt github: https://github.com/nzakas/eslint et voici l'introduction: la http://www.nczonline.net/blog/2013/07/16/introducing-eslint/
Plus de sécurité ciblés que les fins générales de la liste peut être trouvée sur le Wiki de Mozilla à Sécurité/B2G/analyse du code JavaScript
Il y a aussi au moins un produit commercial qui n'a d'analyse de la sécurité: Rot obtient de nouvelles JavaScript capacités d'analyse
Dans le domaine commercial, Coverity Analyse Statique prend en charge l'analyse de JavaScript à partir de la version 7.7 (mi-2015). Concernant l'enquête sur les fautes de frappe, mon animal de projet figurant dans la dernière version (8.0, à compter de 2016) n'trouver les fautes de frappe dans les noms des éléments du programme.
Comme l'un des principaux développeurs sur le projet, veuillez accepter mes plug sans vergogne: Bien que pas encore aussi mature que la vénérée C/C++ analyse, Coverity de l'analyse JavaScript partage beaucoup de le même moteur, avec le même accent sur la recherche de haute valeur défauts avec un faible taux de faux positifs rapports de défaut. Nous sommes davantage concentrés sur la recherche des défauts de sécurité dans le JavaScript (et autres langues), en plus de trouver des général des erreurs de programmation.
Maintenant, voici quelques erreurs de frappe qu'il trouve exacte (faute de frappe laissé comme exercice pour le lecteur, pour souligner combien il est facile de ceux-ci peuvent être négligés):
merge.js: (lien stable) (dernière révision)
commands-packages-query.js: (lien stable) (dernière révision)
series-pie-tests.js: (lien stable) (dernière révision)
outline_case.js: (lien stable) (dernière révision)
J'aime Jslint pour ce genre de chose...
Flux n'analyse statique avec et sans annotations.
Si vous avez besoin d'annotations, la syntaxe est compatible à Tapuscrit.
Installer le package avec :
Il y a aussi quelques outils. Jetez un oeil à gulp-flowtype et peut-être SublimeLinter-flux
JSAnalyse vient d'être publié sur le site codeplex.
C'est un outil qui analyse les dépendances entre les fichiers javascript. Vous pouvez même définir le les dépendances et JSAnalysis vérifie si les règles définies sont remplies ou non. Qui permet de garder une trace sur le javascript dépendances, même dans de grands projets et le propre de l'architecture.
JSAnalyse peut être exécuté comme un outil de ligne de commande ou configuré à l'aide de Visual Studio Couche de schéma électrique. Il est également facile à intégrer dans la construction. Avec gated check-ins, vous pouvez garder les dépendances sous contrôle.
http://jsanalyse.codeplex.com/
Notre SD ECMAScript CloneDR est un outil pour trouver exactes et des quasi-copies de code dupliqué à travers de larges code source JavaScript bases.
Il utilise la syntaxe de la langue pour guider la détection, donc, il faudra trouver des clones en dépit des changements de format, inséré/commentaires supprimés, renommés variables et même certains insérés ou supprimés consolidés.
Le site dispose d'un échantillon CloneDR exécuter sur Google Fermeture de la bibliothèque.
Divulgation complète, je suis derrière cela: http://www.toptensoftware.com/minime qui ne minification, de dissimulation et d'un ensemble raisonnable de peluches chèques de style.