Традиционные линтеры, такие как ESLint, отлично справляются с поиском неиспользуемых переменных в одном файле. Но когда функция экспортируется, линтеры с файловой областью сдаются, предполагая, что какой-то другой модуль может ее импортировать. Чтобы обнаружить действительно мертвые функции в...
Традиционные линтеры, такие как ESLint, отлично справляются с поиском неиспользуемых переменных в одном файле. Но когда функция экспортируется, линтеры с файловой областью сдаются, предполагая, что какой-то другой модуль может ее импортировать.
Чтобы обнаружить действительно мертвые функции во всем проекте, TokenCap выполняет глобальный анализ достижимости графа вызовов в src/graph/deadCode.js.
Как рассчитывается достижимость
Каталог символов: Tree-sitter анализирует все функции, методы и экспортированные объявления.
Сопоставление границ вызова: каждый вызов (call_expression) разрешается в целевой символ.
Обход корня: точки входа (двоичные файлы CLI, обработчики маршрутов, экспорт общедоступных пакетов) помечаются как корневые узлы.
Проверка достижимости: любая внутренняя функция с нулевым количеством входящих ребер из любого корня достижимости помечается как мертвый код.
Проверка CLI
tokencap спросить влияние --dead-code
Выход:
Проверка 94 файлов в 4 кластерах...
Обнаружено 6 невызванных внутренних функций:
- src/utils/formatters.js:84: formatLegacyCurrency (0 вызывающих абонентов)
- src/services/oldAuth.js:112: hashWithMd5 (0 вызывающих абонентов)
- src/middleware/cors.js:45: LegacyCorsFallback (0 вызывающих абонентов)
Потенциальная экономия токенов: 1480 токенов удалены из снимков контекста.
Путем выявления и обрезки мертвых