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 反混淆助手

JavaScript 反混淆助手

还原常见的静态 JavaScript 混淆手法:字符串数组内联、转义解码、常量折叠、死分支删除,以及把方括号访问改写成点号访问。

JavaScript 格式化工具

JavaScript 格式化工具

格式化 JavaScript 代码以提高可读性。

JS 压缩工具

JS 压缩工具

通过删除注释和空白来压缩 JavaScript。

MP4 转 MOV

MP4 转 MOV

MP4 转 MOV可直接在浏览器中将 MP4 转换为适合 QuickTime 工作流的 MOV。适合快速、私密地整理媒体、发布内容、制作课程、演示和日常编辑。

PDF 页码添加

PDF 页码添加

为 PDF 添加页码,并可自定义位置、格式、字体大小和起始编号。

INI 转 JSON

INI 转 JSON

将INI配置文件转换为JSON及反向转换,支持类型推断。

apps

更多工具

浏览我们完整的免费在线工具集合。

这个工具到底在检查什么

本工具使用 acorn 解析你的 JavaScript 代码,并构建一张引用图:每个顶层声明的函数(或顶层的 const x = function(){} / const x = () => {})成为图中的一个节点,其名称在其他地方作为标识符出现的每个位置都成为一条边。然后计算哪些函数可以从一组根节点到达——根节点是文件加载时无条件执行的代码:直接位于顶层的语句、立即执行函数表达式(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 调用的那个,或者由某个框架代为调用的那个),把它填入入口点字段,这样即使文件中没有任何地方按名称引用它,它以及它可传递触及的一切也会被锚定为可达。

摘要区会显示顶层函数总数、其中有多少可达,以及有多少没有静态引用。每条发现都会列出函数名和所在行号。另有一个可折叠的独立列表,展示完整的可达集合,并为每个函数给出一个简短原因——入口点、导出、在 IIFE 内的调用,或在另一个可达函数内部找到的引用。

你粘贴的任何内容都不会离开你的浏览器。