在日常开发中不小心输入错误了代码的时候,如果这个类是第一次在类中使用,FlashBuilder会为我们自动引入包,这是一个非常棒的功能,让我们不需要在乎我们所引用的包到底在哪里,但是当我们编辑的类中没有引用那个被引入的包的时候,FlashBuilder不会自动帮我们删除那些未引用的包,FlashBuilder会将这个包通过波浪线的形式勾选出来,如果这个包不存在工作空间中,当我们编译的时候FlashBuilder会报出警告,再加上我们可以通过Ctrl + Shift + O快捷键祛除未引用的包,按理说这些功能完全能够满足我们的日常开发了,直到昨天我遇到一个问题。
下面来描述下我遇到的问题,不然去实现这个功能的目的就没有了。当我们将本地代码编辑完成上传Svn后通常会通过出档机再次编译代码发布到外网,这时候的编译器就与FlashBuilder编译器不同了,如果出现未引用的包出现在代码中,出档机会报错,如果不去看日志,还压根不知道是出档机报错,这时候我还在等着出档,所以我在思考怎么避免这种情况的发生,比较人为的祛除未引用包始终存在疏漏。
我没有去具体研究FlashBuilder祛除未引用包的实现原理,在这里我可以猜想,这应该是一个字符串匹配的过程或者说包的引入与下面的代码存在一个引用计数,我们看下面一张截图,
当我实例一个Sprite对象的时候,编辑器为我自动引入了Sprite包,当我将Sprite对象删除的时候,编辑器会出现警告消息,如下图。
这时就可以认为代码正文中不存在“Sprite”这个字符串,因此编辑器就报了错。
所以我的思路是:
1.将整个代码看做一个字符串,这个字符串分两部分,部分1:包引入部分,也就是带有import的部分,包名为该字符串的从'.'到';'之间的字符串;部分2:我们编辑的代码部分,带有Class 或Interface标示符以下代码部分
2.通过包名,去匹配下面代码,如果出现次数为0,则未引用,如果不为0就引用了,这时候就不用删除该条字符串
总结:
这里就只是谈谈个人想法,也不知道FlashBuilder到底有没有这个功能,我百度也是一直没百度到,如果有知道的朋友,请把我从坑里面拉出来,不胜感谢~~,另外这里涉及的技术点包括:大量的字符串处理,及文件处理,这是一个极度消耗性能的过程,对于工程项目较大的工程则需要做更多的优化,这些就之后再想了,as对于文件的读写支持都还很不错,直接使用as实现就好,不过我打算使用python实现,一个是python实现代码更加简洁,另一个我正在学python.....
现在一直让自己养成一个写博客的习惯,有些问题希望能够提出,我一定及时改正,我也只是一个入行一年的新手而已,也希望多跟大家交流互相学习。thank you~