Frage

Ich bin es gewohnt, mein Compiler mit beschweren, wenn ich etwas Dummes wie ein Tippfehler auf einem Variablennamen tun, aber JavaScript hat eine Gewohnheit diesen Pass zu lassen.

Gibt es statische Analysetools für JavaScript?

War es hilfreich?

Lösung

Ich bin damit einverstanden, dass JSLint der beste Ort zu beginnen ist. Beachten Sie, dass JavaScript Lint von verschieden ist JSLint . Ich würde auch JSure empfehlen, Check-out, die in meinen begrenzten Tests besser ab als jeder von ihnen, wenn auch mit einige Ecken und Kanten in der Implementierung der Intel Mac-Version abgestürzt beim Start für mich, obwohl die PowerPC-Version auch auf Intel fein lief, und die Linux-Version lief auch gut. (Der Entwickler, Berke Durak, sagte er zu mir zurückkommen würde, wenn dieses Problem behoben wurde, aber ich habe nichts von ihm gehört.)

Sie nicht so viel von JavaScript statischer Analyse erwarten, wie Sie von einem guten C-Checker erhalten. Wie Durak mir gesagt, „jede nicht-triviale Analyse sehr schwierig ist, dynamische Natur aufgrund Javascript.“

(Ein anderer, noch obskurer Mac-only Fehler, diesmal mit JSLint des Konfabulator-Widget: ein BBEdit Dokumentsymbol auf das Widget ziehen, wird das Dokument in den Papierkorb Der Entwickler, Douglas Crockford, hatte das Widget auf eine nicht versucht. Mac).

10. August 2009: Heute auf dem Static Analysis Symposium präsentierte Simon Holm Jensen ein Papier auf < a href = "http://www.brics.dk/TAJS/" rel = "noreferrer"> TAJS: Typ Analyzer für JavaScript , geschrieben mit Anders Møller und Peter Thiemann. Das Papier erwähnt nicht die oben genannten Werkzeuge, aber Jensen sagte mir, er auf einige von ihnen angesehen hatte und war nicht beeindruckt. Der Code für TAJS sollte irgendwann in diesem Sommer zur Verfügung steht.

Andere Tipps

AKTUALISIERT ANTWORT 2017: Ja. Verwenden Sie ESLint. http://eslint.org


Neben JSLint (bereits erwähnt in Flash-Sheridans Antwort ) und die Closure Compiler (zuvor in awhyte Antwort erwähnt) ich habe auch viel Nutzen aus laufenden JSHint und PHP CodeSniffer . Ab dem Jahr 2012 sind alle vier Werkzeuge kostenlose Open-Source und haben eine große und aktive Entwickler-Community hinter ihnen. Sie sind jeweils etwas anders (und ich denke, komplementär) in der Art der Kontrollen führen sie:

JSLint wurde zu sein, entworfen und ist immer noch persönliche Fusseln Tool Douglas Crockford. Es wird mit einem groß default ruleset - Crockford eigene, ständig aktualisiert wie er weiter über JavaScript und seine Tücken lernen . JSLint ist höchst eigenwillige und dies ist in der Regel als eine gute Sache gesehen so ist es (absichtlich) ein begrenzte Menge tun können, um einzelne Regeln zu konfigurieren oder deaktivieren. Aber das kann es schwierig machen JSLint zu Legacy-Code anzuwenden.

JSHint ist sehr ähnlich wie JSLint (in der Tat ist es begann Leben als JSLint Gabel), aber es ist einfacher / möglich? konfigurieren oder deaktivieren alle JSLint Checks über Kommandozeilenoptionen oder über einen .jshintrc Datei .

Ich mag, dass vor allem kann ich sagen JSHint zu berichten alle der Fehler in einer Datei, auch wenn es Hunderte von Fehlern sind. Im Gegensatz dazu, obwohl JSLint eine maxerr Konfigurationsoption hat, wird es in der Regel relativ früh aus der Patsche helfen, wenn man versucht Dateien zu verarbeiten, die eine große Anzahl von Fehlern enthalten.

Der Closure Compiler ist äußerst nützlich, dass, wenn der Code nicht kompilieren mit Verschluss, können Sie fühlen sich sehr sicher, sagte Code ist tief in einigen grundlegenden Weise abgespritzt. Closure Kompilation ist möglicherweise die nächste Sache, dass es in der JS Welt „Dolmetscher“ Syntaxprüfung wie php -l oder ruby -c

Closure auch warnt Sie über mögliche Probleme wie fehlende Parameter und nicht angemeldete oder neu definiert Variablen. Wenn Sie nicht die Warnungen sehen Sie erwarten, versuchen Sie die Warnstufe zu erhöhen durch den Aufruf Schließung mit einer Option von --warning_level VERBOSE

PHP CodeSniffer kann analysieren JavaScript sowie PHP und CSS. CodeSniffer Schiffe with verschiedene Codierungsstandards (sagen phpcs -i sie zu sehen), die viele nützliche schnüffelt für JavaScript-Code einschließlich Schecks gegen Inline-Kontrollstrukturen und überflüssig Leerzeichen .

Hier ist eine Liste von JavaScript schnüffelt in PHP CodeSniffer verfügbar ab Version 1.3 0,6 und hier ist ein benutzerdefinierte ruleset rel="nofollow, die Sie erlauben würde, sie alle auf einmal zu laufen. benutzerdefinierte Regelsätze verwenden, ist es einfach href="http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php" rel="nofollow noreferrer"> holen und zum anwenden möchten. Und Sie können auch Ihre eigene schnüffelt schreiben wenn Sie einen bestimmten „Hausstil“ erzwingen wollen, die aus der Box wird nicht unterstützt. Afaik CodeSniffer ist das einzige Werkzeug der vier hier erwähnt, dass die Anpassung und Erstellung von neuen statischen Analyseregeln unterstützt. Eine Einschränkung allerdings:. CodeSniffer ist auch der langsamste Lauf von einem der erwähnten Tool

Googles "Closure" JS Compiler zur Compile-Zeit konfigurierbare Warnungen und Fehler produziert. Sie findet auf jeden Fall falsch geschriebene Variablen und Methoden sowie arity Fehler. Wenn Sie bereit sind JsDoc die Schließung so zu schreiben, kann es eine Menge mit Typ-Informationen auch tun.

Die YUI „Compressor“ -Tool können Warnungen produzieren, haben aber noch nicht probiert.

Ich habe nicht viel Glück mit dem Aptana IDE, gebaut auf Eclipse, aber auch andere Menschen, wie es war. Siehe Stack-Überlauf Diskussion von JS IDEs.

Die IntelliJ IDE, die nicht frei ist zuletzt habe ich geprüft, hat frickin ausgezeichnete JS Unterstützung. Es erkennt und markiert falsch geschrieben Vars und Methoden, wie Sie schreiben, und vieles mehr. Es hat die automatische Vervollständigung, auch.

Insgesamt JSLint, JSHint, Plato, ESLint, Google Closure-Linter sind die zur Verfügung stehenden Werkzeuge. Ich konfrontiert Probleme bei der Installation bei dem Versuch, aus Google Closure-Linter für Windows. Aber, es nicht erwähnt auf der Webseite, die ihre Unterstützung für Windows experimentell. Ich fand und versuchte, ein anderes Werkzeug, das gut funktioniert. Hier ist der Link für sie: http://esprima.org/

Auch dies ist der Github Link für das Werkzeug Esprima: https://github.com/ariya/esprima

Sie können einige Werkzeuge für JavaScript statische Code-Analyse sehen in diesem Wiki .

Ein Werkzeug wird im Wiki, aber nicht in diesem Beitrag erwähnt, ist Deepscan. Der Schwerpunkt liegt dabei Laufzeitfehler und Qualitätsprobleme zu finden, anstatt Konventionen von Linter Codierung. Es umfasst auch Typoskript, Reaktion und Vue.js.

Sie können es versuchen, für Ihr GitHub Projekt aus.

habe ich versucht, ESlint und fand good..you es können auch benutzerdefinierte Regeln there..Here ist die GitHub Repo hinzufügen: https://github.com/nzakas/eslint und hier ist die Einführung in es: http://www.nczonline.net/blog/2013/07/16/introducing-eslint/

Mehr Sicherheit konzentriert als Allzweck-Liste finden Sie auf dem Mozilla-Wiki unter Sicherheit / B2G / JavaScript gefunden werden Codeanalyse

  

Der Zweck dieses Dokuments ist es JavaScript-Code-Analyse zu sammeln   Werkzeuge geeignet für die Aufnahme in den kommenden Mozilla-Projekte oder für   die interne Gebrauch.

Auch gibt es mindestens ein kommerzielles Produkt, das Sicherheitsanalyse tut: Burp bekommt neue JavaScript-Analysefunktionen

  

Die neueste Version von Spuck enthält einen neuen Motor für die statische Analyse von JavaScript-Code. Dies ermöglicht Spuck Scanner eine Reihe von neuen Sicherheitslücken zu melden, einschließlich:

     
      
  • DOM-basierte XSS
  •   
  • JavaScript Injektion
  •   
  • Client-Seite SQL-Injection
  •   
  • WebSocket-Hijacking
  •   
  • Lokaler Dateipfad Manipulation
  •   
  • DOM-basierten Open-Umleitung
  •   
  • Cookie Manipulation
  •   
  • Ajax-Request-Header-Manipulation
  •   
  • DOM-basierte Denial-of-Service
  •   
  • Web-Nachricht Manipulation
  •   
  • HTML5 Speicher Manipulation
  •   

Im kommerziellen Bereich, Coverity Static Analysis unterstützt die Analyse von JavaScript ab Version 7.7 (Mitte 2015). In Bezug auf Ihre spezifische Anfrage über Fehler, mein Lieblingsprojekt in der neuesten Version erscheinen (8.0, 2016 beginnend) hat Fehler in Namen von Programmelementen finden.

Als wichtiger Entwickler an dem Projekt, bitte meine schamlose Werbung akzeptieren: Obwohl noch nicht so ausgereift wie die verehrt C / C ++ Analyse , Coverity JavaScript Analyse Aktien viel von dem gleichen Motor, mit dem gleichen Fokus auf der Suche nach Hoch Wert Defekte mit einer niedrigen Rate an falsch positiven Fehlerberichte. Wir erhöhen unseren Fokus Sicherheitsmängel in JavaScript auf der Suche nach (und anderen Sprachen), zusätzlich zu dem allgemeinen Programmierfehler zu finden.

Nun, hier sind einige Tippfehler findet es (exakt für den Leser als Übung Typo, zu betonen, wie leicht diese übersehen werden):

merge.js: (stable Link) (neueste Version)

Befehle-Pakete-query.js: (stable Link) (letzte Revision )

Serie-pie-tests.js: (stable Link) (neueste Version)

outline_case.js: (stable Link) (neueste Version)

Ich mag JSLint für diese Art der Sache ...

Fluss statische Analyse funktioniert mit und ohne Anmerkungen.

Wenn Sie Anmerkungen benötigen, ist die Syntax kompatibel zu Typoskript .

Installieren Sie das Paket mit:

npm install --global flow-bin

Es gibt auch einige Werkzeuge. Werfen Sie einen Blick auf schlucke-flowtype und vielleicht SublimeLinter-flow

JSAnalyse hat gerade auf Codeplex veröffentlicht. Es ist ein Werkzeug, das die Abhängigkeiten zwischen den Javascript-Dateien analysiert. Sie können sogar die erlaubten Abhängigkeiten definieren und JSAnalysis überprüft, ob die definierten Regeln erfüllt sind oder nicht. Das erlaubt Spur über die JavaScript-Abhängigkeiten zu halten, auch in großen Projekten und hat eine saubere Architektur.

JSAnalyse kann über das Visual Studio-Layer Diagramm als Kommandozeilen-Tool oder konfiguriert ausgeführt werden. Es ist auch leicht in die Build zu integrieren. Mit gated Check-In können Sie die Abhängigkeiten unter Kontrolle halten.

http://jsanalyse.codeplex.com/

SD ECMAScript CloneDR für die Suche nach einem Werkzeug ist exakt und Near- verpassen Kopien von duplizierten Code in großen Quellcode Basen JavaScript.

Es verwendet die Sprachsyntax den Nachweis zu führen, so wird es Klone trotz Formatänderungen, eingefügt / gelöscht Kommentare finden, Variablen umbenannt und sogar einige eingefügt / gelöscht Aussagen.

Die Seite hat eine Probe CloneDR läuft auf Googles Closure-Bibliothek.

Vollständige Offenlegung, ich bin dahinter: http://www.toptensoftware.com/minime was tut minification Verschleierungs und einen vernünftigen Satz von Kontrollen Flusen Stil.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top