Para hacer esto bien, necesita un gráfico de llamadas global sobre la aplicación C#, calculado usando semántica C# y lo que equivale a un análisis de puntos, incluyendo las bibliotecas que llama. Con un gráfico de llamadas de este tipo, podría enumerar los ciclos en él, y esos serían los candidatos a verificar.
No sé de dónde obtendría una herramienta que calcule un gráfico de llamada global para C#, listo para usar.
Puede obtener una aproximación usando técnicas sencillas de escaneo de códigos. Para cada método M, extraiga el conjunto aparente de llamadas que contiene como identificadores I. En su mayoría, aparecerán como sintaxis que se parece al identificador () Después de este paso, tiene M_i -> I. Puede construir esto como un (extremadamente conservador) gráfico de llamadas básicas, y luego calcular el cierre transitivo. Con eso, usted tiene un gráfico de llamadas aproximado con ciclos, y puede llevar a cabo su análisis de ciclo. Esto pasaría los métodos masivos por nombres y otros casos, pero podría ser lo suficientemente bueno
El análisis del tiempo de compilación (estático) para detectar la recursión no enlazada es bastante difícil de hacer. No creo que haya ninguna herramienta en el espacio .NET que pueda ayudarlo. – Steven
@Steven - sí, no pude encontrar nada con respecto a una herramienta ... lo más cercano que llegué fue un artículo de ACM al respecto ... crucé los dedos cuando publiqué la pregunta. – Sam
¿Desea detectar la recursión arbitraria? O específicamente, recursión que ocurre a través de un manejador de excepciones? –