【问题标题】:How can I identify and analyze local variables and parameters with Roslyn code diagnostics?如何使用 Roslyn 代码诊断来识别和分析局部变量和参数?
【发布时间】:2015-01-17 21:43:04
【问题描述】:

我很困惑在AnalysisContext context 对象上使用哪种方法来分析每个函数/方法的局部变量:RegisterSymbolAction()RegisterSyntaxNodeAction()

根据Roslyn SDK Project Templates.vsix 中的带有代码修复 (NuGet + VSIX) 的示例诊断,可能是 RegisterSymbolAction()

我正在使用一个简单的控制台应用程序进行调试,它的Main() 有一些stringint 类型的局部变量。

我已经尝试了这两个,但都不会触发任何变量在它们各自的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


    【解决方案1】:

    很遗憾RegisterSymbolAction目前只有工作方法及以上。对于本地人和参数,您需要使用RegisterSyntaxNodeAction。我们希望在以后的版本中解决这个问题。

    【讨论】:

    • 这是什么状态?我们希望能够从语义上分析方法/代码块中的局部符号?
    • 很高兴看到描述这一事实的文档的参考
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多