前言
想必大家在工作中或多或少都会遇到这样的问题。
例如,你修改了A文件。测试没问题,开开心心的提交了代码,结果了一会一个bug单提了过来。某某功能怎么出问题了。这时你发现正是你修改的A文件导致的问题。原来A文件被其他文件所依赖了。而你并没有测试那些被依赖的文件是否正常。这种情况在你接手别人的代码时,尤为突出,改个代码都胆战心惊的,生怕改出其他问题来。
下面介绍的这个工具可以一定程度上缓解这样的问题。
工具地址
github : github.com/shimingw/co…
npm : www.npmjs.com/package/cov…
实现思路
- 使用babel,从入口文件开始,进行依赖分析,读取文件描述以及依赖的其他文件,递归执行。导出依赖树
- 使用git diff获取所有修改以及新增的文件
- 结合依赖树依次分析每个文件
- 生成每个文件的依赖视图
根据依赖视图的话,就可以看到每个修改过的文件,在哪些地方被依赖了。从而帮助你对该文件的影响范围有一个更清楚的认识。
总结
这个工具的话目前只能根据import、import()这两种方式进行依赖分析,后续会增加对require和require.ensure的支持。但是尽管这样的话,其实还是无法对所有依赖都能检测出来,比如对全局下挂载的对象的依赖关系、vuex的依赖关系、vue注册的全局组件的依赖关系、redux的依赖关系。这种依赖关系分析起来相对复杂,目前还不支持。