我有兴趣为vb.net编写静态代码分析器,看它是否符合我公司的标准编码指南。 请告知我必须从哪里开始。
如何为.net编写静态代码分析器
How to write static code analyzer for .net
===============>>#1 票数:16
我建议您使用FxCop而不是编写自己的静态代码分析器,而是根据需要编写自定义FxCop规则。 它会为你节省很多时间。 http://www.binarycoder.net/fxcop/
===============>>#2 票数:4
我建议你使用Mono的Gendarme。 这是一个非常好的工具,有很多内置规则。 它还可以生成漂亮的HTML报告。
===============>>#3 票数:2
如果你需要mroe架构洞察使用NDepend。 这个工具不会让我感到惊讶。 它可以比FxCop做得更多。 虽然它是商业版,但有免费试用版
===============>>#4 票数:1 已采纳
FXCop是编码问题/错误的良好开端, StyleCop很适合编码风格(显然),但是如果这两者都没有用,那么你可以自己编写解析器或者在.Net Framework中使用VBCodeProvider类
===============>>#5 票数:0
我同意其中一张海报,认为这将是一个相当困难的事情,但不是与Lisp我开始使用F#,就像微软为他们的第三方Windows驱动程序分析工具做的那样:
http://arstechnica.com/journals/microsoft.ars/2005/11/10/1796
F#分享Lisp的表现力(好吧,差不多),就像VB.NET一样在CLR上工作,这会让整个事情变得更容易。
===============>>#6 票数:0
从FxCop开始。 如果你不能做你在那里尝试的东西,尝试像NStatic或NDepend这样的东西。
===============>>#7 票数:0
最好的选择是使用FxCop或StyleCop并在必要时编写自定义规则。
===============>>#8 票数:0
使用FxCop,这不是您想要亲自承担的项目。 涉及的解析/词汇规则和可能的捕获将是疯狂的。 在保留一点理智的同时,我能想象的唯一方法是使用Lisp,这要归功于极端的表现力,但同样,最好使用FxCop。
如果您必须为某些(教条?)原因编写自定义内部工具,我建议编写一个只执行基本规则检查的Lisp程序。 不要试图使它全面,我们谈论的是AI研究人员在一个软件的解析功能方面正在处理的那种前沿。
只需使用Lisp找到可能的明显违规者,或者只是抓住任何最终擅长捕捉不合规代码的东西,然后对其进行简短的人眼扫描。 如果您使用Lisp编写解析器,我强烈建议滥用宏。