C#代码分析 - VS 2005

3

我有一个C#用户控件项目,会引起间歇性的.NET运行时错误,一个通用的错误,想知道是否有任何代码分析工具,可以指向我的.sln文件,告诉我可能是什么原因导致了我的错误。


这个应该标记为“静态分析工具”。 - Bob The Janitor
5个回答

3

有没有一种工具可以告诉你哪里出了问题?

没有。这是编程的一部分乐趣。计算机程序不可能查看代码并明确确定所有错误。

是否有工具可以告诉我程序中做错的事情?

是的,这些被称为静态分析工具。 FxCop是一个免费的工具,可从Microsoft获得,它将对您的代码库进行惊人的静态分析。

我不确定独立版本是否可以指向.sln文件。但是它可以轻松地指向解决方案的构建输出。

http://msdn.microsoft.com/en-us/library/bb429476.aspx


我认为这不是他想要的。 - Sergej Andrejev
@Sergej,是的,我稍微读错了问题。我更新了我的答案,使其更符合问题。 - JaredPar

1
你需要的是一个静态代码分析工具 - 除了JaredPar提到的FXCop之外,还有其他
我最近发现的另一个选项是PEX,它提供了一种有用的查找此类问题的方法,即白盒单元测试。因此,当您运行PEX探索时,它将尝试通过自动生成的单元测试向您的方法发送大量值,这可能有助于找到由奇怪/意外数据引起的奇怪问题。

0

NDepend已经完全集成在VS2005、VS2008和VS2010中。因此,您只需将NDepend指向要分析的sln文件,NDepend就会为您生成完整的报告。

只需点击几下,您就可以可视化地查看哪些类型依赖于哪些类型等。这显然不会神奇地解决您所有的问题,但很可能会让您走上正确的轨道。


0

但是我不会将静态分析工具与调试器混淆,我认为你在这里需要的是调试。换句话说,FxCop可能会告诉你一切都很好,但你仍然可能会遇到运行时异常。

有些运行时错误通过查看代码可能非常难以发现(例如多个线程之间的竞争条件)。因此,没有“代码分析工具”可以通过分析代码来解决运行时异常。

请查看此链接以获取有关调试的示例:http://msdn.microsoft.com/en-us/library/ms954594.aspx。您可能需要使用调试器逐步执行代码,将一些数据跟踪到日志文件中,然后尝试找到出错的位置。


0

就工具而言,FX Cop非常适合进行代码分析,而且它是免费的。但另一个值得一看的工具是http://www.jetbrains.com/resharper/,它可以进行实时代码分析并促进良好的开发实践。

但这些可能不是适合当前问题的正确工具,因为代码可能在语法上是正确的,但存在逻辑错误导致问题。这就像拼写检查器,所有单词都拼写正确,“每只鸟是圆锥形”的意义完全不同于“每个单词都正确”。

你可能需要在调试器中或使用某种追踪工具(如dotTrace Profiler)花费一些时间,还有一些其他工具可以在Visual Studio Galleryhttp://www.debuginspector.com/上找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接