2014-02-09 31 views
0

客户拥有数百万行代码(VB.Net和C#),并且希望我们开发一个工具来估计代码的质量。解析C#和VB.Net代码以自动执行代码审查过程

什么顾客想要知道的信息包括:

1)在一个代码文件

2)有多少功能于一体的一流

3实施意见多少行)是否所有可能的例外已被折由try/catch块

4)有多少属性附接到一个功能

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

我们计划编写一个VS.Net插件,它可以解析代码及时启动项目。似乎这里有趣的是我们需要解析C#和VB.Net的代码。

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

感谢先进!

+2

一旦罗斯林编译器和C#6.0的船,你应该能够检查所有的语法节点的一个非常方便的方式。它还没有出来,但CTP非常令人印象深刻。 –

+0

所有这些都可以通过搜索关键字,搜索类的末尾(funktion)并将其解析为类来轻松完成。 –

+0

@EddynandFuchs这是真的,但它可能很难保持新版本的C#和VB出货。例如,C#被认为是获取属性和方法定义的新语法。 –

回答

1

你问一个很广泛的问题,但你应该通过研究现有的解析器的API开始。 一旦你做到了,你就是金。

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

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

要经过你的清单:

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

2)有多少功能于一体的类来实现:同样地,应该很容易

3)是否所有可能的异常已经由try/catch块包裹:同样,只是发现异常抛出(解析器可能有一个特殊的语言关键字类型,所以寻找throw应该很容易)。

4)有多少属性附接到一个功能:和...同样

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

0

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

http://stylecop.codeplex.com/

+0

当我接受它时,他想写一个工具而不是使用现有的工具。 – MasterMastic

+0

查看StyleCop代码的想法可能有用吗? –