【发布时间】:2015-01-17 21:43:04
【问题描述】:
我很困惑在AnalysisContext context 对象上使用哪种方法来分析每个函数/方法的局部变量:RegisterSymbolAction() 或RegisterSyntaxNodeAction()。
根据Roslyn SDK Project Templates.vsix 中的带有代码修复 (NuGet + VSIX) 的示例诊断,可能是 RegisterSymbolAction()。
我正在使用一个简单的控制台应用程序进行调试,它的Main() 有一些string 和int 类型的局部变量。
我已经尝试了这两个,但都不会触发任何变量在它们各自的AnalyzeSymbol() 回调方法中进行分析。每个回调方法中的断点不会被局部变量命中。
如何在回调方法AnalyzeSymbol() 中获取要分析的局部变量和/或我做错了什么?
var symbolsToActOn = new[] { SymbolKind.Local, SymbolKind.Parameter, SymbolKind.Field };
context.RegisterSymbolAction(AnalyzeSymbol, symbolsToActOn);
或
var syntaxTypes = new[] { SyntaxKind.IdentifierName, SyntaxKind.IdentifierToken, SyntaxKind.Parameter };
context.RegisterSyntaxNodeAction(AnalyzeSyntaxNode, syntaxTypes);
我的demo project is on GitHub仔细看,具体的作品在DiagnosticAnalyzer.cs。
【问题讨论】:
标签: c# roslyn visual-studio-2015