如何为.net编写静态代码分析器

时间:2008-09-16 17:01:05

标签: vb.net code-analysis

我有兴趣为vb.net编写静态代码分析器,看它是否符合我公司的标准编码指南。请告知我必须从哪里开始。

8 个答案:

答案 0 :(得分:16)

我建议您使用FxCop而不是编写自己的静态代码分析器,而是根据需要编写自定义FxCop规则。它会为你节省很多时间。 http://www.binarycoder.net/fxcop/

答案 1 :(得分:4)

我建议你使用Mono的Gendarme。这是一个非常好的工具,有很多内置规则。它还可以生成漂亮的HTML报告。

答案 2 :(得分:2)

如果您需要更多架构洞察力,请使用NDepend。这个工具不会让我感到惊讶。它可以比FxCop做得更多。虽然它是商业的,但有免费试用版

答案 3 :(得分:1)

FXCop是编码问题/错误的良好开端,StyleCop对编码风格很明显(显然),但如果这两者都没有用,那么你可以自己编写解析器或者使用.Net Framework中的VBCodeProvider

答案 4 :(得分:0)

从FxCop开始。如果你不能做你在那里尝试的东西,可以试试像NStatic或NDepend。

答案 5 :(得分:0)

最好的选择是使用FxCop或StyleCop并在必要时编写自定义规则。

答案 6 :(得分:0)

使用FxCop,这不是您想要亲自承担的项目。涉及的解析/词汇规则和可能的捕获将是疯狂的。在保留一点理智的同时,我能想象的唯一方法是使用Lisp,这要归功于极端的表现力,但同样最好使用FxCop。

如果您必须为某些(教条?)原因编写自定义内部工具,我建议编写一个只执行基本规则检查的Lisp程序。不要试图使其全面,我们谈论的是AI研究人员在软件解析功能方面所处理的那种前沿。

只需使用Lisp查找可能明显的违规者,或者只是抓住任何最终擅长捕捉不合规代码的内容,然后对其进行简短的人眼扫描。如果您使用Lisp编写解析器,我强烈建议滥用宏。

答案 7 :(得分:0)

我同意其中一张海报说这将是一个相当困难的事情,但不是用Lisp我会从F#开始,就像微软为他们的第三方Windows驱动程序分析工具所做的那样:

http://arstechnica.com/journals/microsoft.ars/2005/11/10/1796

F#分享了Lisp的表现力(好吧,差不多),就像VB.NET一样在CLR上工作,这将使整个事情变得更容易。