Tiny Online Tools logoTiny Online ToolssearchTools suchen…grid_viewAlle Tools
Startseitechevron_rightReverse-Engineering-Werkzeugechevron_rightJavaScript-Analysator für toten CodeJavaScript-Analysator für toten Code

JavaScript-Analysator für toten Code

Bundle einfügen und Top-Level-Funktionen finden, auf die im Datei nirgendwo eine statische Referenz zeigt — eine heuristische Erreichbarkeitsanalyse, keine Gewissheit.

scienceNur eine Heuristik. Eine als „vermutlich ungenutzt“ markierte Funktion kann trotzdem dynamisch aufgerufen werden — über obj[berechneterName](), eval, new Function(...) oder Function.prototype.call/apply auf eine zur Laufzeit gewählte Referenz — auf Wegen, die dieser statische Scan nicht sehen kann. Vor dem Löschen manuell prüfen.JavaScript-Quellcode
Durch Kommas getrennte Funktionsnamen, die als erreichbare Wurzeln behandelt werden, auch wenn im Rest der Datei keine Referenz auf sie gefunden wird.

Ahnliche Tools

JavaScript-Verschleierer

JavaScript-Verschleierer

Benennt lokale Variablen um, versteckt Zeichenketten und flacht den Kontrollfluss in JavaScript ab – vollständig im Browser, ohne Upload.

JavaScript-Deobfuskierungshelfer

JavaScript-Deobfuskierungshelfer

Macht gängige statische JavaScript-Verschleierung rückgängig: String-Array-Lookups, Escapes, konstante Faltung, tote Zweige und eckige Klammern zu Punkten.

G-code-Betrachter

G-code-Betrachter

Eine geslicete G-code-Datei in 3D ansehen: Schicht für Schicht, eingefärbt nach Feature, Bewegungsart, Geschwindigkeit oder Extruder.

JavaScript-Formatter

JavaScript-Formatter

JavaScript-Code für die Lesbarkeit formatieren.

Kalenderwochen-Rechner

Kalenderwochen-Rechner

Ermitteln Sie ISO-8601-Kalenderwoche, US-Woche, Tag des Jahres und verbleibende Tage für jedes Datum.

UUID-Generator

UUID-Generator

Erstelle eindeutige UUID-v4-Kennungen.

Zeichenhaeufigkeits-Zaehler

Zeichenhaeufigkeits-Zaehler

Analysiere, wie oft jedes Zeichen in einem Text vorkommt.

apps

Mehr Tools

Durchsuchen Sie unsere vollstandige Sammlung kostenloser Online-Tools.

Was dieses Tool wirklich prüft

Dieses Tool parst dein JavaScript mit acorn und baut einen Referenzgraphen: Jede auf oberster Ebene deklarierte Funktion (oder const x = function(){} / const x = () => {} auf oberster Ebene) wird zu einem Knoten, und jede Stelle, an der ihr Name als Bezeichner auftaucht, wird zu einer Kante. Anschließend wird berechnet, welche dieser Funktionen von einer Menge von Wurzeln aus erreichbar sind — Code, der beim Laden der Datei bedingungslos ausgeführt wird: Anweisungen direkt auf oberster Ebene, der Rumpf eines sofort aufgerufenen Funktionsausdrucks (IIFE), alles, was module.exports / exports.x / window.x / globalThis.x zugewiesen wird, sowie alle Namen von Einstiegspunkten, die du selbst eingibst. Alles, was von einer Wurzel aus transitiv erreichbar ist, bleibt erhalten; der Rest wird gemeldet.

Lies das, bevor du einem Befund vertraust

Eine Funktion, die dieses Tool „vermutlich ungenutzt“ nennt, kann trotzdem tatsächlich verwendet werden. Statische Analyse kann nicht hindurchsehen bei:

  • Dynamischem Dispatchobj[berechneterName](), tabelle[schlüssel]() — der Eigenschaftsname ist erst zur Laufzeit bekannt.
  • eval und new Function(...) — aus einem String konstruierter Code ist für einen AST-Durchlauf unsichtbar.
  • Reflexionfn.call(...), fn.apply(...) auf eine zur Laufzeit dynamisch gewählte Referenz, oder Object.keys(obj).forEach(k => obj[k]()).

Jeder Befund wird als „keine statische Referenz gefunden“ formuliert, nie als Tatsache. Behandle das als Hinweis, der eine manuelle Prüfung verdient, nicht als Urteil — besonders bevor du etwas löschst.

So wird es benutzt

Füge den Inhalt einer .js-Datei in den Editor ein oder lade ihn. Wenn du den Namen der echten Einstiegsfunktion deines Bundles bereits kennst (die, die dein HTML aufruft, oder die ein Framework für dich aufruft), trage ihn im Feld für Einstiegspunkte ein — dann wird er, und alles, was er transitiv berührt, als erreichbar verankert, selbst wenn ihn nichts in der Datei namentlich referenziert.

Die Zusammenfassung zeigt die Gesamtzahl der Top-Level-Funktionen, wie viele davon erreichbar sind und wie viele keine statische Referenz haben. Jeder Befund nennt den Funktionsnamen und seine Zeile. Eine separate, eingeklappte Liste zeigt die vollständige erreichbare Menge mit einem kurzen Grund für jede — ein Einstiegspunkt, ein Export, ein Aufruf innerhalb eines IIFE, oder eine Referenz, die innerhalb einer anderen erreichbaren Funktion gefunden wurde.

Nichts von dem, was du einfügst, verlässt deinen Browser.