上图是NET程序集分析工具TypeMonster的截图(这是一个原型,已经可以运作)。它显示了从 Object 到 FrameworkElement 的继承链。
TypeMonster是一个辅助分析工具,帮助程序员分析一个.NET类型的内部结构,及其内部的运作机制。
从这一点看TypeMonster的功能看起来和.NET Reflector类似。但实际上两者的定位是不同的。
TypeMonster核心理念,并不仅仅是告诉你目标程序集里“有什么”,而是为你提供一个精心设计的分析工具集,让你弄清楚“为什么”目标程序集里有这些东西。
从上面的运行图例可以看出TypeMonster的用户界面是经过精心设计的,因此我们有理由相信使用它完成类型进行分析是一件愉快的事。
TypeMonster内置了一套好用的笔记与注解功能,分析人员可以直接在TypeMonster内编写分析笔记——这是对我而言最重要的功能!
因为工作的关系,我经常需要分析一些程序集内部的运作机制。过去我一直是使用.NET Reflector,后来也试过其他一些工具,例如JustDecompile。
这些工具都很强大。但是我最苦恼的地方是,这些工具的设计风格,基本上还是非常传统的Windows应用程序风格——使用各种内置成品控件,例如菜单、按钮、树形控件、拥挤的界面划分等等。
看看现在平板电脑上的设计,传统桌面平台的设计简直就是石器时代。我并不是说平板上的就都是好东西,平板上的垃圾软件和游戏堆得比山还高,但是平板上引入的新的设计方法,是值得借鉴的。并且我认为在桌面平台上也应该可以很好的再现出来。
带着这样的想法,我开始来制作TypeMonster。上面的截图是来自真实可运行的版本,但是在发布第一个版本之前我还需要为它添加许多的细节。
目前我已经为它开发了一个符合ECMA-355(5e)规范的反汇编引擎。在此基础上,我希望不久后,TypeMonster也可以将一个方法反编译为等价的C#或者VB.NET代码。
但我认为这并不是重点。因为这件事.NET Reflector已经做得很好了,我会花费更多的精力,来完善TrustMore的视觉细节,并完善其他功能。
接下来要完成的工作:
- 补充一些过滤条件,例如 public、internal 等等
- 为Field和Property显示出其对应的类型信息
- 为Method显示出参数列表和返回值类型信息
- 对重载额Method创建一个组,而不是显示一系列同名的函数
- 能够扫描GAC,创建一个cache文件快速完成类型匹配和检索
- 其他
我已经在这一程序上花费了超过一个月的时间。并且我将继续在其上花费更多的时间。
如果顺利,在下周就可以发布第一个预览版本。如果你关注这一项目,欢迎你订阅我在博客园的博客。如果有什么建议或者疑问,欢迎留言。如果有什么批评,恳请轻拍。
最后强调一下,TypeMonster 会是一个开源、免费的软件。很快会托管在 Github 上。
谢谢!