Tiny Online Tools logoTiny Online ToolssearchПоиск инструментов…grid_viewВсе инструменты
Главнаяchevron_rightИнструменты обратной разработкиchevron_rightАнализатор мёртвого кода JavaScriptАнализатор мёртвого кода JavaScript

Анализатор мёртвого кода JavaScript

Вставьте JS-бандл и найдите функции верхнего уровня, на которые нет ни одной статической ссылки в файле — эвристический анализ достижимости, а не гарантированный результат.

scienceЭто только эвристика. Функция с пометкой «вероятно не используется» всё ещё может вызываться динамически — через obj[вычисленноеИмя](), eval, new Function(...) или Function.prototype.call/apply на ссылке, выбранной во время выполнения, — способами, которые это статическое сканирование не видит. Проверяйте вручную, прежде чем что-либо удалять.Исходный код JavaScript
Имена функций через запятую, которые будут считаться достижимыми корнями, даже если в остальной части файла на них не найдено ни одной ссылки.

Похожие инструменты

Обфускатор JavaScript

Обфускатор JavaScript

Переименовывает локальные переменные, скрывает строковые литералы и запутывает поток управления в JavaScript — полностью в браузере, без загрузки на сервер.

Анализатор PE/EXE

Анализатор PE/EXE

Изучайте исполняемые файлы и DLL Windows формата PE: заголовки COFF, секции, импорт, экспорт и типы ресурсов — прямо в браузере.

Помощник деобфускации JavaScript

Помощник деобфускации JavaScript

Отменяет распространённые статические приёмы обфускации JavaScript: подстановку строк из массива, декодирование escape-последовательностей, свёртку констант, удаление мёртвых веток и замену квадратных скобок точками.

Анализатор Mach-O

Анализатор Mach-O

Изучайте бинарные файлы Mach-O для macOS и iOS: архитектуру, команды загрузки, сегменты, секции и связанные библиотеки — прямо в браузере.

Конвертер формата даты

Конвертер формата даты

Конвертируйте даты между форматами: ISO 8601, US, EU, RFC, пользовательские шаблоны и Unix-метки.

Удаление дублирующихся страниц PDF

Удаление дублирующихся страниц PDF

Автоматически находите и удаляйте повторяющиеся страницы в PDF с помощью визуального отпечатка. Очистите сканы и сшитые документы за секунды.

Генератор hexdump

Генератор hexdump

Создавайте классический вид hexdump из загруженных файлов.

apps

Больше инструментов

Просмотрите нашу полную коллекцию бесплатных онлайн-инструментов.

Что этот инструмент проверяет на самом деле

Инструмент разбирает ваш JavaScript с помощью acorn и строит граф ссылок: каждая функция, объявленная на верхнем уровне (или const x = function(){} / const x = () => {} на верхнем уровне), становится узлом, а каждое место, где её имя встречается как идентификатор — рёбром. Затем вычисляется, какие функции достижимы из набора корней — кода, который выполняется безусловно при загрузке файла: инструкции прямо на верхнем уровне, тело немедленно вызываемой функции (IIFE), всё, что присвоено module.exports / exports.x / window.x / globalThis.x, а также любые имена точек входа, которые вы укажете сами. Всё, что достижимо из корня транзитивно, сохраняется; то, что осталось, попадает в отчёт.

Прочтите это, прежде чем доверять результату

Функция, которую инструмент называет «вероятно не используется», может на самом деле использоваться. Статический анализ не видит сквозь:

  • Динамическую диспетчеризациюobj[вычисленноеИмя](), table[key]() — имя свойства известно только во время выполнения.
  • eval и new Function(...) — код, построенный из строки, невидим для обхода AST.
  • Рефлексиюfn.call(...), fn.apply(...) на ссылке, выбранной динамически, или Object.keys(obj).forEach(k => obj[k]()).

Каждый результат сформулирован как «статическая ссылка не найдена», а не как факт. Относитесь к нему как к наводке, которую стоит проверить вручную, а не как к вердикту — особенно прежде чем что-то удалять.

Как пользоваться

Вставьте или загрузите содержимое .js-файла в редактор. Если вы уже знаете имя настоящей точки входа вашего бандла (той, которую вызывает ваш HTML или за вас вызывает фреймворк), впишите его в поле точек входа — тогда оно и всё, чего оно транзитивно касается, будет закреплено как достижимое, даже если в файле нет ни одной ссылки на него по имени.

В сводке показано общее число функций верхнего уровня, сколько из них достижимо и сколько не имеет статической ссылки. Каждая находка указывает имя функции и номер строки. Отдельный сворачиваемый список показывает полный набор достижимых функций с кратким пояснением для каждой — точка входа, экспорт, вызов внутри IIFE или ссылка, найденная внутри другой достижимой функции.

Ничего из вставленного вами не покидает ваш браузер.