我有一个C#用户控件项目,会引起间歇性的.NET运行时错误,一个通用的错误,想知道是否有任何代码分析工具,可以指向我的.sln文件,告诉我可能是什么原因导致了我的错误。
有没有一种工具可以告诉你哪里出了问题?
没有。这是编程的一部分乐趣。计算机程序不可能查看代码并明确确定所有错误。
是否有工具可以告诉我程序中做错的事情?
是的,这些被称为静态分析工具。 FxCop是一个免费的工具,可从Microsoft获得,它将对您的代码库进行惊人的静态分析。
我不确定独立版本是否可以指向.sln文件。但是它可以轻松地指向解决方案的构建输出。
NDepend已经完全集成在VS2005、VS2008和VS2010中。因此,您只需将NDepend指向要分析的sln文件,NDepend就会为您生成完整的报告。
只需点击几下,您就可以可视化地查看哪些类型依赖于哪些类型等。这显然不会神奇地解决您所有的问题,但很可能会让您走上正确的轨道。
但是我不会将静态分析工具与调试器混淆,我认为你在这里需要的是调试。换句话说,FxCop可能会告诉你一切都很好,但你仍然可能会遇到运行时异常。
有些运行时错误通过查看代码可能非常难以发现(例如多个线程之间的竞争条件)。因此,没有“代码分析工具”可以通过分析代码来解决运行时异常。
请查看此链接以获取有关调试的示例:http://msdn.microsoft.com/en-us/library/ms954594.aspx。您可能需要使用调试器逐步执行代码,将一些数据跟踪到日志文件中,然后尝试找到出错的位置。
就工具而言,FX Cop非常适合进行代码分析,而且它是免费的。但另一个值得一看的工具是http://www.jetbrains.com/resharper/,它可以进行实时代码分析并促进良好的开发实践。
但这些可能不是适合当前问题的正确工具,因为代码可能在语法上是正确的,但存在逻辑错误导致问题。这就像拼写检查器,所有单词都拼写正确,“每只鸟是圆锥形”的意义完全不同于“每个单词都正确”。
你可能需要在调试器中或使用某种追踪工具(如dotTrace Profiler)花费一些时间,还有一些其他工具可以在Visual Studio Gallery和http://www.debuginspector.com/上找到。