0

roslyn で生成された制御フロー グラフにはノードとしてブロック (basicblock) が含まれ、各 basicblock には 1 つ以上の命令が含まれます。複数の命令を含む基本ブロックの場合、すべての命令とそのタイプを取得しようとします。これは私が行ったことです:

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。また、そのタイプに応じて、各命令でいくつかの操作を実行したいと考えています。

4

1 に答える 1