我有兴趣为vb.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编写解析器,我强烈建议滥用宏。

  ask by translate from so

未解决问题?本站智能推荐:

4回复

VB.NET中的公共变量和公共属性有什么区别? (代码分析VS2010,CA1051:Microsoft.Design)

在我的项目上运行代码分析时,我收到以下消息: CA1051 : Microsoft.Design : Because field 'ClassName.VarName' is visible outside of its declaring type, change its accessib
2回复

有关构造函数的代码分析警告

我编写了一个类来执行系统范围的热键操作,这是唯一的构造函数: 项目的代码分析表明: CA2214不要在构造函数“ GlobalHotkey.New(GlobalHotkey.HotkeyModifier,Keys)”中调用可覆盖的方法,该调用包含导致对类定义的虚拟方法的调用的调
3回复

免费或商业的Visual Basic代码分析服务

任何人都知道vb.net的良好代码分析服务或工具吗? 就像Visual Studio 2008 Team Edition的C#版本或C#样式警察一样 更新:不好,我只是在新工作场所使用Visual Studio Pro,所以无法使用Visual Studio 2008团队版的代码分析
9回复

任何检查重复的VB.NET代码的工具?

我希望能够快速了解​​我们有多少“复制和粘贴”编码,有很多工具可供C#/ Java检查这类事情。 有没有这样的工具可以很好地与VB.NET一起使用? (我已经看到了很多重复的代码,但希望得到一些数字来帮助我做出整理的情况) 进展更新。 我刚试过西安。 它似乎无法生
1回复

查找硬编码值-.Net代码中的连接字符串,主机名和URI

我有一个包含VB项目和网站代码库的.Net应用程序。 源代码中几乎没有硬编码的值,例如连接字符串,主机名和URI。 我正在尝试找出一种可以检测到所有这些的工具。 我已经尝试过SonarVB和Resharper。 但是他们无法捕获硬编码的值。 请提出是否还有其他选择。 这是.vb文件中
1回复

声纳.net插件无法使用多种语言

我试图在.net解决方案上运行Sonar,该解决方案主要包含c#项目以及一个旧版vb.net项目。 声纳无法运行,并显示以下错误消息: 找不到键为“ vbnet”的语言。 我尝试使用以下命令将项目排除在配置文件中: sonar.skippedModules ,但这没有帮助。
1回复

.Net-正确处理子对象

通过代码分析(Visual Studio),我得到了以下警告: 警告2 CA2000:Microsoft.Reliability:...在对对象'l'的所有引用都超出范围之前,调用System.IDisposable.Dispose。 因此,我更改了代码: 至 警告消
4回复

Vb.Net CA1822

我运行了代码分析,并收到以下消息: 警告5 CA1822:Microsoft.Performance:从不使用“ MainForm.CheckFileIfFileIsInUse(String)”的“ this”参数(在Visual Basic中为“ Me”)。 将成员标记为静态成员(
1回复

CodeAnalysis可以返回CA2202的误报吗?或者我的代码确实有问题?

我遇到了这里解释的相同问题,但迭代了一个EnvDTE.Processes 。 在我链接的问题中,用户@ Plutonix确认这是一个错误警告,我认为他参考obj.Getenumerator()提及所以我认为我的问题也会被视为虚假警告,但是,如果这是假的警告我想知道的不仅仅是一种肯定,而是说
1回复

诊断代码以在运行时检查错误的工具

是否可以检查代码并查找所有可能发生转换错误的地方。 对于Ex:无论在哪里使用=运算符,我都必须检查LHS和RHS变量的类型。 使用以下软件可以吗?