【发布时间】:2019-08-10 08:49:34
【问题描述】:
roslyn中生成的控制流图包含块(basicblock)作为节点,每个basicblock包含一条或多条指令。对于包含多个指令的基本块,我尝试获取所有指令及其类型,这就是我所做的:
var cfg = ControlFlowGraph.Create(method);
foreach(var block in cfg.Blocks)
{
foreach(var operation in block.Operations)
{
var syntax = operation.Syntax;
Console.WriteLine(syntax.Kind());
}
}
以下方法:
public int method(int x, int y)
{
y = 10;
x = y;
return x + y;
}
我得到了结果:
ExpressionStatement
ExpressionStatement
但我想获得确切的指令,例如指令x = y; 的类型我想获得AssignmentExpressionSyntax。
我还想根据指令的类型对每条指令执行一些操作。
【问题讨论】:
标签: c# roslyn roslyn-code-analysis control-flow-graph