我最近写了一篇post here on Stackoverflow,要求一些计算指标的C#库,主要是CC ...遗憾的是没有成功。所以我打算自己写。我在网上搜索了什么是最好的方法,但在开始之前,我想问你如何做到这一点。
我目前介于两种方法之间
我更倾向于第二种方法,因为直接解析源代码对我来说似乎不是一个好方法。我读过有关集成在.Net框架中的CodeDom。我知道它用于动态代码生成。我想我也可以用它来分析代码结构,不是吗?你们有没有一个很好的使用CodeDom的起点,一些提示,好的教程从哪里开始?
由于
编辑: 或者可能是其他一些允许轻松解析源代码的实用程序(类似DOM的结构)。
答案 0 :(得分:3)
Gendarme在Mono.Cecil的帮助下做了一些代码指标(可能会对你要完成的工作有帮助吗?)
答案 1 :(得分:1)
查看Microsoft Research的{{3}}。
答案 2 :(得分:0)
使用CodeDom的问题在于它是一种方式 - 有用于生成代码的API,但没有用于解析代码的API。我似乎记得听说过一些不支持/隐藏的API,它们将代码解析为CodeDom结构,但我不确定。
另外,您如何从程序集本身获取代码?反思不是归结于IL,而是归结为类的成员。
答案 3 :(得分:0)
看看this CodeProject article。这似乎是你想要做的事情的开始,但需要一些补充;因为本文中的示例代码不解析成员,只解析类型和名称空间。
我知道CodeDOM没有完整的解析器,也提到了on the BCL Team Blog。
答案 4 :(得分:0)
请参阅计算CC和其他各种指标的C# Metrics tool。
答案 5 :(得分:0)
由于您关注.NET,请查看使用.Net Reflector
有多种Plugins计算一些基本指标,包括CC。
如果你找不到你想要的东西,为什么不写自己的。 .NET Reflector有plugin API提供了一种可以轻松分析的CodeDom模型(另见page的底部)