Tiny Online Tools logoTiny Online Toolssearchツールを検索…grid_viewすべてのツール
ホームchevron_rightリバースエンジニアリングツールchevron_rightJavaScript デッドコード解析JavaScript デッドコード解析

JavaScript デッドコード解析

JSバンドルを貼り付けると、ファイル内のどこからも静的に参照されていないトップレベル関数を検出します——到達可能性のヒューリスティック分析であり、確実な判定ではありません。

scienceあくまでヒューリスティックです。「未使用の可能性」と表示された関数でも、obj[計算されたキー]()、eval、new Function(...)、あるいは実行時に動的に選ばれた参照への Function.prototype.call/apply など、この静的スキャンでは見抜けない方法で実際には呼び出されている場合があります。削除する前に必ず手作業で確認してください。JavaScript ソースコード
カンマ区切りの関数名。ファイル内の他の場所から参照が見つからなくても、到達可能なルートとして扱われます。

関連ツール

JavaScript 難読化ツール

JavaScript 難読化ツール

ローカル変数の名前を変更し、文字列リテラルを隠し、制御フローを平坦化します。すべてブラウザ内で完結し、アップロードは一切ありません。

JavaScript 難読化解除ヘルパー

JavaScript 難読化解除ヘルパー

文字列配列の参照展開、エスケープのデコード、定数畳み込み、無効な分岐の削除、角括弧からドット記法への変換など、よくある静的難読化パターンを元に戻します。

ELFファイルインスペクター

ELFファイルインスペクター

LinuxやUnixのELFバイナリを解析します。ヘッダー、セクション、セグメント、シンボル、共有ライブラリの依存関係をブラウザ上で確認できます。

JavaScript フォーマッター

JavaScript フォーマッター

JavaScript コードを読みやすく整形します。

JPGからPDF

JPGからPDF

JPG画像を1つのPDF文書に変換します。

PDF 圧縮

PDF 圧縮

アップロードせずに PDF ドキュメントのファイルサイズを削減します。

PDF アウトラインエディター

PDF アウトラインエディター

PDF のしおり/アウトラインを追加・置換。インデント付きリストを貼り付けて階層ナビツリーを生成。

apps

もっと見る

無料オンラインツールの全コレクションを見る。

このツールが実際に調べていること

このツールは acorn を使ってJavaScriptを解析し、参照グラフを構築します。トップレベルで宣言された関数(またはトップレベルの const x = function(){} / const x = () => {})は1つのノードになり、その名前が識別子として他の場所に現れるたびにエッジが追加されます。次に、ファイルの読み込み時に無条件に実行されるコード——トップレベルに直接書かれた文、即時実行関数式(IIFE)の本体、module.exports / exports.x / window.x / globalThis.x への代入、そして自分で入力したエントリーポイント名——をルートとして、そこから到達可能な関数を計算します。ルートから推移的に到達できるものはすべて保持され、残ったものが報告されます。

結果を信じる前に必ず読んでください

このツールが**「未使用の可能性」**と分類した関数でも、実際には使われている場合があります。静的解析では次のようなケースを見抜けません。

  • 動的ディスパッチobj[計算されたキー]()table[key]() のように、プロパティ名が実行時にしか決まらない場合。
  • evalnew Function(...) — 文字列から組み立てられたコードはAST走査には見えません。
  • リフレクション — 実行時に動的に選ばれた参照に対する fn.call(...)fn.apply(...)、あるいは Object.keys(obj).forEach(k => obj[k]())

すべての結果は*「静的な参照が見つかりませんでした」*という表現にとどめており、断定はしません。何かを削除する前に、特に手作業での確認が必要な手がかりとして扱ってください。判定として鵜呑みにしないでください。

使い方

.js ファイルの内容をエディタに貼り付けるか読み込んでください。バンドルの本当のエントリー関数名(HTMLから呼ばれる関数、あるいはフレームワークが代わりに呼び出す関数)がすでにわかっている場合は、エントリーポイント欄に入力しておくと、ファイル内のどこからも名前で参照されていなくても、その関数と推移的に触れるすべてが到達可能として固定されます。

サマリーにはトップレベル関数の総数、到達可能な数、静的参照が見つからない数が表示されます。各検出結果には関数名と行番号が示されます。折りたたみ可能な別のリストには、到達可能な関数の全体と、それぞれの簡単な理由(エントリーポイント、export、IIFE内での呼び出し、あるいは別の到達可能な関数内で見つかった参照)が表示されます。

貼り付けた内容がブラウザの外に送信されることはありません。