使用CodeDom分析代码结构?

时间:2009-07-08 19:31:30

标签: c# .net metrics codedom code-metrics

我最近写了一篇post here on Stackoverflow,要求一些计算指标的C#库,主要是CC ...遗憾的是没有成功。所以我打算自己写。我在网上搜索了什么是最好的方法,但在开始之前,我想问你如何做到这一点。

我目前介于两种方法之间

  • 给定源代码目录,用正则表达式或类似方法解析源代码,以便识别方法,条件语句等构造,以便能够计算CC
  • 给定一个程序集,加载它并进行分析(使用CodeDom?)

我更倾向于第二种方法,因为直接解析源代码对我来说似乎不是一个好方法。我读过有关集成在.Net框架中的CodeDom。我知道它用于动态代码生成。我想我也可以用它来分析代码结构,不是吗?你们有没有一个很好的使用CodeDom的起点,一些提示,好的教程从哪里开始?

由于

编辑: 或者可能是其他一些允许轻松解析源代码的实用程序(类似DOM的结构)。

6 个答案:

答案 0 :(得分:3)

GendarmeMono.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的底部)