我正在编写一个分析器,以检测抽象类中的某个方法是在特定方法中还是通过嵌套调用。
使用语义模型并通过方法声明语法,我可以找到它的第一个祖先:
private void MethodA()
{
AbstractA();
}
如果在AbstractA()
内部调用了MethodA()
,我应该能够产生诊断信息。如果代码如上所示,则可以通过FirstAncestorOrSelf
,但是,如果出现以下情况,则该怎么办
private void MethodA()
{
MethodB();
}
private void MethodB()
{
AbstractA()
}
我必须能够检测是否通过AbstractA()
中的MethodB()
调用了MethodA()
并产生诊断信息。
或者简单地说,如果从多层嵌套中调用AbstractA()
:
private void MethodA()
{
MethodB();
}
private void MethodB()
{
MethodC();
}
private void MethodC()
{
AbstractA();
}
在这种情况下,我也应该能够产生诊断信息。