我们正在重构一个遗留的 web 应用程序,结果是“杀死”了相当多的 JavaScript 代码,但是由于不确定,我们害怕删除我们认为是死代码的代码。是否有任何工具/技术可以正面识别 JavaScript 中的死代码?
这是 Grep。使用它来查找函数调用。假设您有一个名为 dostuff()的方法。在项目的根目录上使用 grep -r "dostuff()" * --color。除非你找到定义以外的东西,你可以安全地删除它。
dostuff()
grep -r "dostuff()" * --color
Ack 也是 Grep的一个显著替代品。
您可以使用代码优化器作为 Google 闭包编译器,但是它通常用于最小化代码。
function hello(name) { alert('Hello, ' + name); } function test(){ alert('hi'); } hello('New user');
会导致
alert("Hello, New user");
比如说。
另一件你可以做的事情是使用 Chrome 的开发工具(或 Firebug)来查看所有的函数调用。在 档案下,您可以看到哪些函数正在被调用,哪些函数没有被调用。
没有寻找任何太复杂的东西:
来自 JetBrains 的 WebStorm IDE 可以突出显示项目中的死代码和未使用的变量。
Chrome 提供了一个新功能,可以让开发者看到 代码覆盖率,也就是执行了哪些代码行。
这当然不是一个一站式的解决方案,但是可以帮助开发人员获得代码见解。
查看此 链接了解详细信息
滚动作为 铬59释放的一部分
如果你想自动化这个过程,我会看看 https://github.com/joelgriffith/navalia,它公开了一个自动化的 API 来完成这个过程:
const { Chrome } = require('navalia'); const chrome = new Chrome(); chrome.goto('http://joelgriffith.net/', { coverage: true }) .then(() => chrome.coverage('http://joelgriffith.net/main.bundle.js')) .then((stats) => console.log(stats)) // Prints { total: 45913, unused: 5572, percentUnused: 0.12135996340905626 } .then(() => chrome.done());
详情请浏览: https://joelgriffith.github.io/navalia/Chrome/coverage/
你可以使用 死档案库: Https://m-izadmehr.github.io/deadfile/
它可以在任何 JS 项目中找到未使用的文件。
没有任何配置,它支持 ES6、 JSX 和 Vue 文件:
我讨厌这个问题,而且没有解决这个问题的好工具,尽管这个 javascript 生态系统需要大量的解析。正如在另一个答案中提到的,deadfile 非常简洁,但是我不能使它适用于我的代码库,它使用从 src目录的绝对导入。下面的 bash 足够好,可以了解是否有任何文件没有导入到任何地方(我找到了一些!)这是很容易手工验证的。
src
for f in $(find src -name '*.js' | grep -E 'src/(app|modules|components).*\.js$' | grep -v '.test.js'); do f=${f/src\//}; f=${f/\/index.js/}; f=${f/.js/}; echo "$f imported in"$(grep -rl "$f" src | wc -l)" files" done
我不关心测试/资源,因此应用程序 | 模块 | 组件位。字符串替换也可以被显著地清除,但是希望这对某些人来说是有用的。