我正在寻找一个递归分析工具

Sam*_*Sam 11 .net recursion code-analysis static-code-analysis

我在本周末遇到了一个问题,其中方法1调用方法2,调用方法3捕获异常,并在异常处理方法1中再次调用...

M1 - > M2 - > M3 - > M1 ....

一旦问题发生,问题变得明显且易于修复.

有谁知道在.NET应用程序中检测这样的问题的工具?

Ira*_*ter 6

要做到这一点,你需要一个基于C#应用程序的全局调用图,使用C#语义进行计算,这相当于一个点到分析,可以说包括它调用的库.使用这样的调用图,您可以枚举其中的周期,这些将是要检查的候选者.

我不知道你会在哪里获得一个为C#计算这样一个全局调用图的工具,现成的.

您可以使用简单的代码扫描技术来估算它.对于每个方法M,提取它包含的一组调用作为标识符I.大多数它们将显示为看起来像标识符的语法( 在此步骤之后,您有M_i - > I.您可以将其构建为(外部保守)基本调用图形,然后计算传递闭包.有了这个,你有一个带周期的近似调用图,你可以进行循环分析.这可以通过名称和其他情况传递质量方法,但它可能已经足够了.


pou*_*pou 2

宪兵将捕获一些(最常见但基本的)递归情况。MS FxCop 也有一些(IIRC)。然而,(目前)都没有规则来涵盖更复杂的情况,例如:M1->M2->M3->M1...

遗憾的是,我不知道有任何其他工具可以对 .NET 进行此类检测。请分享您发现的任何内容:-)