Question

Je suis habitué à avoir mon compilateur se plaindre quand je fais quelque chose de stupide comme une faute de frappe sur un nom variable, mais JavaScript a l'habitude de laisser ce passage.

Y a-t-il des outils d'analyse statique pour JavaScript?

Était-ce utile?

La solution

Je suis d'accord que JSLint est le meilleur endroit pour commencer. Notez que JavaScript Lint est distinct de JSLint . Je voudrais aussi suggérerais vérifier JSure , qui, à mon test limité a fait mieux que l'un d'eux, mais avec quelques bords rugueux dans la mise en œuvre, la version Intel Mac se sont écrasés au démarrage pour moi, bien que la version PowerPC a fonctionné très bien même sur Intel, et la version Linux a fonctionné très bien aussi. (Le développeur, Berke Durak, a dit qu'il allait revenir à moi quand cela a été fixé, mais je n'ai pas entendu parler de lui.)

Ne vous attendez pas autant de l'analyse statique JavaScript que vous obtenez d'un bon C vérificateur. Comme Durak m'a dit, « toute analyse non triviale est très difficile en raison de la nature dynamique Javascript. »

(Une autre, encore plus obscur bug Mac seulement, cette fois avec le widget Konfabulator de JSLint: Faire glisser une icône de document BBEdit sur le widget déplace le document à la poubelle Le développeur, Douglas Crockford, n'a pas essayé le widget sur un. Mac.)

10 Août 2009: Aujourd'hui, au Symposium Analyse statique , Simon Holm Jensen a présenté un document sur < a href = "http://www.brics.dk/TAJS/" rel = "noreferrer"> TAJS: type analyseur 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 n'a pas été impressionné. Le code pour TAJS devrait être disponible cet été.

Autres conseils

RÉPONSE À JOUR 2017: Oui. Utilisez ESLint. http://eslint.org


En plus de JSLint (déjà mentionné dans flash réponse de Sheridan) et le compilateur de fermeture (précédemment mentionné dans la réponse de awhyte ) J'ai aussi obtenu beaucoup d'avantages de courir et href="http://pear.php.net/package/PHP_CodeSniffer" rel="nofollow noreferrer"> PHP CodeSniffer . En 2012, les quatre outils sont libres open-source et ont une grande et active communauté des développeurs derrière eux. Ils sont chacun un peu différent (et je pense, complémentaire) dans les types de contrôles qu'ils effectuent:

JSLint a été conçu pour être, et est toujours outil de peluchage personnel de Douglas Crockford. Il est livré avec grand default ruleset - Crockford propre, constamment mis à jour comme il continue d'apprendre sur JavaScript et ses pièges. JSLint est très opiniâtres et ce qui est généralement vu comme une bonne chose Ainsi, il est (intentionnellement) a quantité limitée vous pouvez faire pour configurer ou désactiver des règles individuelles. Mais cela peut le rendre difficile à appliquer JSLint au code existant.

JSHint est très similaire à JSLint (en fait, il a commencé sa vie comme fourchette JSLint), mais il est plus facile / possible de configurer ou désactiver tous les chèques de JSLint via les options de ligne de commande ou via un fichier .jshintrc .

Je je peux particulièrement comme dire JSHint faire rapport toutes les erreurs dans un fichier, même s'il y a des centaines d'erreurs. En revanche, bien que JSLint a une option de configuration maxerr, il sera généralement relativement tôt en liberté sous caution lors d'une tentative de traiter les fichiers qui contiennent un grand nombre d'erreurs.

Le compilateur de fermeture est extrêmement utile dans la mesure, si le code pas compiler avec fermeture, vous pouvez vous sentir très certain ledit code est profondément aspergés d'une manière fondamentale. compilation de fermeture est peut-être la chose la plus proche qu'il ya dans le monde JS à une vérification de la syntaxe « interprète » comme php -l ou ruby -c

Fermeture également vous met en garde contre les problèmes potentiels tels que les paramètres manquants et les variables non déclarées ou redéfinie. Si vous ne voyez pas les avertissements que vous attendez, essayez d'augmenter le niveau d'alerte en invoquant la fermeture avec une option de --warning_level VERBOSE

PHP CodeSniffer peut analyser JavaScript ainsi que PHP et CSS. w navires codesnifferième plusieurs normes de codage différentes, (dire phpcs -i les voir) qui comprennent de nombreux renifle utiles pour le code JavaScript, y compris les contrôles contre noreferrer structures de contrôle en ligne et superflu espace.

Voici une liste des JavaScript renifle disponible en PHP CodeSniffer partir de la version 1.3 0,6 et voici un personnalisé qui vous permettra de les exécuter à la fois. en utilisant des filtres personnalisés, il est facile de prendre et choisir les règles que vous souhaitez appliquer. Et vous pouvez même écrire vos propres reniflements si vous souhaitez appliquer un « style maison » particulier non pris en charge hors de la boîte. Afaik CodeSniffer est le seul outil des quatre 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 la plus lente fonctionnement de l'un des outils mentionnés

compilateur « fermeture » de Google JS produit des alarmes configurables et des erreurs à la compilation. Il trouve certainement des variables et des méthodes mal orthographiés, ainsi que des erreurs de arity. Si vous êtes prêt à écrire jsdoc la voie de fermeture, il peut faire beaucoup avec des informations de type, aussi.

L'outil YUI « compresseur » peut produire des avertissements aussi, mais n'a 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 Stack Overflow discussion de JS IDEs.

Le IntelliJ IDE, ce qui est pas libre que j'ai vérifié dernier, a frickin un excellent soutien JS. Il permet de détecter et mettre en évidence vars fautes d'orthographe et les méthodes que vous tapez, et plus encore. Il est obtenu saisie semi-automatique, aussi.

En résumé, JSLint, JSHint, Platon, ESLint, Google fermeture Linter sont les outils disponibles. Je fait face à des problèmes d'installation tout en essayant Google fermeture Linter pour Windows. Mais, il ne mentionne sur la page Web que son support pour Windows est expérimental. J'ai trouvé et essayé un autre outil qui fonctionne bien. Voici le lien pour elle: http://esprima.org/

En outre, c'est le lien github pour l'outil Esprima: https://github.com/ariya/esprima

Vous pouvez voir des outils JavaScript pour l'analyse de code statique dans cette Wiki .

Un outil dans le Wiki, mais pas mentionné dans ce poste, est DeepScan . Son objectif est de trouver des erreurs d'exécution et les problèmes de qualité plutôt que de conventions de codage de bourres. Il couvre également tapuscrit, et React Vue.js.

Vous pouvez l'essayer pour votre projet GitHub.

J'ai essayé ESlint et trouvé good..you peut également ajouter des règles personnalisées there..Here est le repo github: https://github.com/nzakas/eslint et est ici l'introduction il: http://www.nczonline.net/blog/2013/07/16/introducing-eslint/

Plus de sécurité axée que la liste des fins générales se trouve sur le Wiki Mozilla Sécurité / B2G / JavaScript l'analyse du code

  

Le but de ce document est de recueillir l'analyse de code JavaScript   des outils appropriés pour inclure dans les prochains projets Mozilla ou pour   usage interne.

En outre il y a au moins un produit commercial qui fait l'analyse de la sécurité: Burp obtient de nouvelles capacités d'analyse JavaScript

  

La dernière version de Burp comprend un nouveau moteur pour l'analyse statique du code JavaScript. Cela permet Burp Scanner de signaler une série de nouvelles vulnérabilités, y compris:

     
      
  • XSS base DOM
  •   
  • injection JavaScript
  •   
  • injection SQL côté client
  •   
  • détournement d'avion WebSocket
  •   
  • manipulation de chemin de fichier local
  •   
  • redirection ouverte basée DOM-
  •   
  • manipulation des cookies
  •   
  • Ajax demande la manipulation d'en-tête
  •   
  • refus basé DOM-service
  •   
  • manipulation de messages Web
  •   
  • manipulation de stockage HTML5
  •   

Dans le domaine commercial, Analyse statique Coverity soutient l'analyse de JavaScript de la version 7.7 (mi-2015). En ce qui concerne votre demande spécifique sur les fautes de frappe, mon projet animal apparaissant dans la dernière version (8.0, à partir de 2016) ne trouve typos dans les noms des éléments du programme.

En tant que développeur clé du projet, s'il vous plaît accepter mon plug sans vergogne: Bien que pas encore aussi mature que (lien stable) (dernière révision)

commandes-packages-query.js: (lien stable) (dernière révision )

série-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 fait l'analyse statique avec et sans annotations.

Si vous avez besoin d'annotations, la syntaxe est compatible tapuscrit.

Installer le paquet rel="nofollow"> avec:

npm install --global flow-bin

Il y a aussi un certain outillage. Jetez un oeil à -gulp flowtype et peut-être SublimeLinter flux

JSAnalyse vient d'être publié sur CodePlex. Il est un outil qui analyse les dépendances entre les fichiers javascript. Vous pouvez même définir les dépendances autorisées et vérifie si JSAnalysis les règles définies sont remplies ou non. Cela permet de garder une trace sur les dépendances javascript même dans les grands projets et ont une architecture propre.

JSAnalyse peut être exécuté comme un outil de ligne de commande ou de configuration par l'intermédiaire de la couche Visual Studio Diagramm. Il est également facile à intégrer dans la construction. Avec check-ins gated vous pouvez garder les dépendances sous contrôle.

http://jsanalyse.codeplex.com/

SD ECMAScript CloneDR est un outil pour trouver exacte et quasi manquer des copies de code dupliqués sur de grandes bases de code source JavaScript.

Il utilise la syntaxe du langage pour guider la détection, donc il trouvera des clones en dépit des changements de format, les commentaires insérés / supprimés, renommés des variables et même certains insérer / effacer des déclarations.

Le site a une course échantillon CloneDR sur la bibliothèque de fermeture de Google.

La divulgation complète, je suis derrière ceci: http://www.toptensoftware.com/minime qui fait minification, faux-fuyants et un ensemble raisonnable de contrôles de style non pelucheux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top