[英]What is the "GlobalStatementSyntax" syntax node type in Roslyn
[英]Roslyn SymbolFinder Convert Location to Syntax Node
我正在使用 SymbolFinder 來查找對變量的所有引用。 我想檢查這個字段是否被分配到它的定義之外。
var references = await SymbolFinder.FindReferencesAsync(equivalentSymbol,
context.GetSolution(), cancellationToken);
//Reference is grouped by variable name
var reference = references.FirstOrDefault();
foreach (var location in reference.Locations)
{
//How Do I check if the reference is an assignment?
}
如何將位置轉換為語法節點,然后檢查該節點是否為賦值?
您可以使用接受TextSpan
FindNode()
所以你的例子看起來像:
var node = location.SourceTree.GetRoot().FindNode(location.SourceSpan);
我創建了一個擴展方法來這樣做:
public static SyntaxNode GetNodeFromLocation(this SyntaxTree tree, ReferenceLocation location)
{
var lineSpan = location.Location.GetLineSpan();
return tree.GetRoot().DescendantNodes().FirstOrDefault(n => n.GetLocation().GetLineSpan().IsEqual(lineSpan));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.