我正在开发一个WYSIWIG动画编辑器,用于设计包含大量依赖关系的滑块/广告横幅,这也意味着许多额外的膨胀代码都没有被使用过。我希望能够运行一份有关帮助我识别重要事项的代码的报告。我有几个很酷的开始,将搜索所有函数的javascript并按部分返回每个函数: https://regex101.com/r/sXrHLI/1
然后一些PHP将按大小排序: Sort preg_match_all by named group size
我们的想法是,通过识别未使用的大型功能,我们可以删除它们。我的下一步是确定在文档加载时调用哪些函数的函数树,然后在点击/鼠标悬停等操作上加载和调用哪些函数。
虽然我有这个方便的功能告诉我在DOM中加载的所有功能,但它还不够:
var functionArray;
$(document).ready(function(){
var objs = [];
for (var obj in window){
if(window.hasOwnProperty(obj) && typeof window[obj] === 'function') objs.push(obj);
};
console.log(obj));
});
我正在寻找一个可以用来在PHP / shell中编写脚本以模拟页面加载的解决方案 - 现在这里我的术语知识让我失望,我在寻找" Call Stack",do我需要时间轴,解释器,框架,引擎或解析器吗?
我接下来需要模仿所有元素的click / hover事件,或者匹配像此regex这样的所有元素:
(?|\$\(['"](\.\w*)["']|getElementsByClassName\('(\w*)'\))
(?|\$\(['"](\#\w*)["']|getElementsById\('(\w*)'\))
找到触发函数的任何事件,这样我就可以创建需要在最终代码中的函数的主列表。
答案 0 :(得分:2)
我正在观看谷歌开发者的演讲,我想到了你的帖子。以下链接有more intel on Dev Tools Coverage Profiler,但以下是高级别。
谷歌开发工具发布了一个简洁的功能,用于生成有关已使用和未使用的JS和CSS代码的报告 - 这正是你所搜索的内容的本质(只是一个稍微不同的媒介 - 它是一个有点难以自动化,但我相信,它确实包含你正在寻找的东西。)
打开开发工具,然后打开左下角的椭圆(见图),然后单击录制按钮[见图1]。完成您要捕获的步骤。您将获得一个交互式屏幕,您可以浏览所有代码并查看使用的内容(绿色)和未使用的内容(红色)[见图2]
图片1 - 椭圆下拉以获取覆盖工具
图片2 - 编辑此帖子时此StackOverflow页面的交互式报告的完整屏幕截图。
答案 1 :(得分:1)
我建议你看看这个工具: Istanbul
有了它,您可以执行以下操作:
如果您想要更进一步,您实际上可以使用jvm-cucumber和selenium之类的东西来自动化UI测试。但是,每次重新加载页面时都需要转储coverage数据。然后,您必须组合来自不同运行的覆盖率,并使用此组合的lcov数据生成整体报告。
整个过程有点沉重,但它比开始重塑它更好。
更重要的是,您可以将此数据与单元测试覆盖率信息结合起来,以生成联合报告。
更进一步,您可能需要设置sonar服务器,以便存储多个版本的覆盖率报告并比较测试之间的差异。