客户拥有数百万行代码(VB.Net和C#),并希望我们开发一种工具来估算代码的质量。
客户想知道的信息包括:
1)一个代码文件中有多少行注释
2)在一个类中实现了多少个函数
3)是否所有可能的异常都被try / catch块包装
4)一个函数附加了多少属性
5)...(客户说我们提供的工具应该配置和扩展,以便他们以后可以实现更多的想法)
我们计划编写一个VS.Net插件,它可以及时解析开放项目的代码。看来有趣的是,我们需要解析C#和VB.Net的代码。
请提供一些有关如何开始这项有趣任务的提示。
先谢谢了!
答案 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,你可以添加规则获取你想要的信息吗?