近日以第三方的身份承接了一个大型业务系统(Visual C#2003)的维护。由于项目中的类继承层次较深,代码分析时在不同类文件之间转来转去【右键菜单转定义到...】的,头晕啊! 尤其是查看实现了多态的不同类里的那些继承下来的protected override修饰的方法(比如了解每个继承层实现了什么功能....)时尤其头痛啊...。
其实,在确定某段或某部分代码必须修改时,我们首先要分析修改可能产生的纵横向影响。而纵向影响主要来自代码所属类的继承关系(功能继承和多态),横向影响主要指代码所属的方法是否公共(public/protected/internal)、代码所属类与其他类之间的关联程度(被聚合、包含)。......关于代码维护还请各位看官不吝赐教,分享交流类似的经验,不胜感激。
知道有个Reflector软件,以及基于它提供的很多插件,但好像就是没有分析项目、程序集、类的继承关系功能的插件。在网上搜索也没有发现提供这方面功能分析的工具(也许是我孤陋寡闻...)。因此萌发了编写一个具有此类分析功能的小工具的念头,目前V0.1版(本来想把版本号设置为V0.001,因为工具太简陋了,哈哈)仅实现了以下功能:
1、类的成员(方法、属性...)的浏览;
2、分析单个类的继承情况;
3、分析单个程序集的类继承情况;
4、分析所有加载的程序集(通常为一个项目)的类继承。
使用工具分析项目(一个EXE文件和很多DLL文件)中所有类的继承关系:
分析单个类的继承关系:
工具采用Visual C#2005 编写,关于采用的反射原理就不啰嗦了。
接下来的版本想继续完善以下功能:
1、工具中选项对话框中的视图过滤功能;
2、IL代码显示功能;
3、类、方法等的相关性分析;
4、反编译成C#代码。
5、各位看官大大提出的其他功能...。
欢迎下载试用并多提宝贵意见,等到工具提升到V1.0时(或者自认为编写的代码不会遭人耻笑时),我会提供完整源代码下载的,其实工具没有混淆也没有加壳,【Reflector】就有源代码啦!谢谢!