3dG*_*ber 5 syntax diff abstract-syntax-tree roslyn roslyn-code-analysis
假设我有两个SyntaxTrees A和B,
其中B是通过对A应用更改而生成的.
我想获得以下信息:
这有API吗?
如果没有,如何有效地计算?
这些信息必须可供Roslyn使用,
因为GreenNode树之间共享未更改的信息.
我能想到的一个解决方案是使用SyntaxTree.GetChangedSpans()
然后查找相交的令牌.
然而,感觉就像一个黑客,我不确定它是否总是准确的.
小的文本更改可能会对a产生很大影响SyntaxTree:(
例如*,+在表达式中替换可能会更改其顺序/优先级)