![](/img/trans.png)
[英]How to get to Workspace in DiagnosticAnalyzer and CodeFixProvider? (Roslyn)
[英]Roslyn - How can I get all references of a variable at DiagnosticAnalyzer class?
我目前正在嘗試使用Roslyn定義代碼修復程序。 我有一個SyntaxNode
變量。
我想在我的DiagnosticAnalyzer
類中找到該變量的所有引用。 不幸的是, SymbolFinder.FindReferencesAsync
方法需要一個Solution
參數,如果我知道的話,我無法從DiagnosticAnalyzer
類中獲取當前的解決方案。
如何在DiagnosticAnalyzer
類中獲取變量的所有引用?
我實現了一個類似的分析器,算法如下(它在2000+行Document上運行~31ms,但幾乎總是在10ms以下)
SemanticModel.GetRoot()
所有節點並收集Expressions和LocalDeclarations IDisposable
,如果存在,則存儲在HashSet1
中 HashSet2
SyntaxReference
是在符號HashSet1
但不是在HashSet2
這很好用,但遺憾的是我不知道是否有更有效/更清潔的方法。 如果你願意,我可以分享部分代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.