解析C#和VB.Net代码以自动执行代码审查过程

时间:2014-02-09 09:49:00

标签: c# vb.net visual-studio parsing visual-studio-extensions

客户拥有数百万行代码(VB.Net和C#),并希望我们开发一种工具来估算代码的质量。

客户想知道的信息包括:

1)一个代码文件中有多少行注释

2)在一个类中实现了多少个函数

3)是否所有可能的异常都被try / catch块包装

4)一个函数附加了多少属性

5)...(客户说我们提供的工具应该配置和扩展,以便他们以后可以实现更多的想法)

我们计划编写一个VS.Net插件,它可以及时解析开放项目的代码。看来有趣的是,我们需要解析C#和VB.Net的代码。

请提供一些有关如何开始这项有趣任务的提示。

先谢谢了!

3 个答案:

答案 0 :(得分:1)

您提出了一个非常广泛的问题,但您应该首先研究现有的解析器API。 一旦你这样做,你就会变得金黄。

例如,请查看此SO question,它为C#提供了一些解析器。当然你可以写自己的,但我找不到任何理由,因为这项任务并不容易。

所以你得到你的AST,一旦你这样做了,你就拥有了你想要的所有信息 请记住,如果您引用文件中不包含的类型,则必须从另一个类型中获取该类型,并且它也可以是.NET中的类型。所以肯定还有更多的工作要做。

通过列表:

1)一个代码文件中有多少行注释:您可以通过您选择的C#解析器找到它。他们认可评论

2)在一个类中实现了多少个函数:同样,应该非常简单

3)是否所有可能的异常都被try / catch块包装:同样,只需查找异常抛出(解析器可能有一个特殊的语言关键字类型,因此寻找throw应该很容易)。

4)一个函数附加了多少属性:和...同样

5)...(客户说我们提供的工具应该配置和扩展,以便他们以后可以实现更多的想法):不应该与任何其他项目不同。只要确保你使用良好的设计原则,保持一切抽象,明智地使用界面,使你的工作分层等等......

答案 1 :(得分:1)

您可以使用Roslyn。对于C#,您还可以使用NRefactory

答案 2 :(得分:0)

看看Stylecop,你可以添加规则获取你想要的信息吗?

http://stylecop.codeplex.com/