.NET Testability Explorer

在负责一个Unit Testing on CAB的内部培训项目期间,我阅读了Miško Hevery的一系列文章,他目前在Google担任敏捷教练。我对他的Testability Explorer(简称GTE) 产生了浓厚兴趣。

虽然Java和.Net世界已经有一些类似工具存在,但GTE这个项目实现功能比较专一,输出结果也直接易懂。相对NDepend强大但相对复杂和FxCop官方但略显强硬,GTE这个项目从形式上来说更有亲和力。所以我和Joe同学在Google Code上开始了一个新项目: .NET Testability Explorer(简称NTE)。
功能受众是期望对输出的.NET Assembly进行分析的开发人员,报告中提供的信息可以帮助他们对设计进行调整,从而使code base更容易测试和维护。

计划是,首先实现圈复杂度的度量,然后实现输出类似GTE形式的报告。希望能够在09年农历新年前发出第一个版本。
目前TE的成本模型支持对全复杂度、全局变量和笛米特法则的计算。

技术层面可以参考Gendarme这个项目,一个基于Mono.Cecil的代码分析工具。

Updates 20081221
项目分成两部分:IL分析,基于规则的成本模型计算

IL分析:目前IL分析方面的技术调研实现了类型,字段,方法级别的读取。剩下最大的一部分是方法中instruction的decompose,这部分估计占全部的40%工作量。但是我需要从成本模型分析的方向进行分析,确定在decompose过程中所需要收集的信息,所以先完成大概10%遍历所有instruction构建一个草图模型。目标是实现最简单的圈复杂度的计算。
成本模型:完成大概10%-20%的基础模型构建,支持全复杂度的计算。
下一步,重构设计使其能支持更多的规则考量,并增强其可扩展性。
目前从代码量来看完成了TE全部功能的1/6,考虑到TE支持对C++语言的分析,折半其工作量,目前大概完成了全部工作的1/3。

目标定于在完成一半的时候提交代码到Google Code,并发布第一个可运行的版本。时间定于08年圣诞节期间。新的计划是春节之前,发布第一个可运行的版本,并将代码提交。

标签: ,

  • http://mahendramavani.com Mahendra Mavani

    I m interested in exploring more into testability explorer for dotnet. There is no way I could read this post as it appear to as bunch of pictures to me. Can you tell me what is current status of this project and is there any english guide for how to or getting started way.

    • http://sunliwen.com Sun Liwen

      Hi, I’ve never finished the project and not sure if I will continue. My latest commit was about one year ago.
      It’s only a project I used to learn IL and the mechanism of byte code.
      The only thing I have is the codebase, feel free to continue.

      Thanks for comment.