AnalysisContext 类

定义

用于初始化分析器的上下文。 分析器初始化可以使用 AnalysisContext 来注册在以下任意位置执行的操作:

  • 编译开始,
  • 编译结束,
  • 完成分析代码文档,
  • 完成代码文档的语义分析,
  • 完成符号的语义分析,
  • 开始对方法主体或出现在方法主体外部的表达式进行语义分析,
  • 完成方法主体或显示在方法主体外部的表达式的语义分析,或者
  • 完成语法节点的语义分析。
public ref class AnalysisContext abstract
public abstract class AnalysisContext
type AnalysisContext = class
Public MustInherit Class AnalysisContext
继承
AnalysisContext

构造函数

AnalysisContext()

用于初始化分析器的上下文。 分析器初始化可以使用 AnalysisContext 来注册在以下任意位置执行的操作:

  • 编译开始,
  • 编译结束,
  • 完成分析代码文档,
  • 完成代码文档的语义分析,
  • 完成符号的语义分析,
  • 开始对方法主体或出现在方法主体外部的表达式进行语义分析,
  • 完成方法主体或显示在方法主体外部的表达式的语义分析,或者
  • 完成语法节点的语义分析。

属性

MinimumReportedSeverity

指示此分析上下文报告的最低诊断严重性。 不会报告严重性低于此严重性的分析器诊断。

方法

ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags)

为此分析器配置生成的代码的分析模式。 对于生成的代码,未配置的分析器将默认为适当的默认模式。 建议分析器使用所需 GeneratedCodeAnalysisFlags 设置调用此 API。

EnableConcurrentExecution()

启用此分析器注册的分析器操作的并发执行。 注册并发执行的分析器比非并发分析器具有更好的性能。 但是,此类分析器必须确保其操作可以并行正确执行。

RegisterAdditionalFileAction(Action<AdditionalFileAnalysisContext>)

注册要为每个非代码文档执行的操作。 其他文件操作报告 Diagnostic有关 AdditionalText 文档的 。

RegisterCodeBlockAction(Action<CodeBlockAnalysisContext>)

注册在对方法主体或显示在方法主体外部的表达式进行语义分析后要执行的操作。 代码块操作报告 Diagnostic有关代码块的 。

RegisterCodeBlockStartAction<TLanguageKindEnum>(Action<CodeBlockStartAnalysisContext<TLanguageKindEnum>>)

注册一个操作,该操作将在方法主体或显示在方法主体外部的表达式的语义分析开始时执行。 代码块启动操作可以注册其他操作和/或收集要用于诊断分析的状态信息,但本身不能报告任何 Diagnostic

RegisterCompilationAction(Action<CompilationAnalysisContext>)

注册要为完整编译而执行的操作。 编译操作报告 Diagnostic有关 的 Compilation

RegisterCompilationStartAction(Action<CompilationStartAnalysisContext>)

注册一个操作,以在编译开始时执行。 编译启动操作可以注册其他操作和/或收集要用于诊断分析的状态信息,但本身不能报告任何 Diagnostic

RegisterOperationAction(Action<OperationAnalysisContext>, ImmutableArray<OperationKind>)

使用适当的 Kind 注册在 完成语义分析 IOperation 时要执行的操作。 操作操作可以报告 Diagnostic有关 IOperation的 ,还可以收集其他操作操作或代码块结束操作要使用的状态信息。

RegisterOperationAction(Action<OperationAnalysisContext>, OperationKind[])

使用适当的 Kind 注册在 完成语义分析 IOperation 时要执行的操作。 操作操作可以报告 Diagnostic有关 IOperation的 ,还可以收集其他操作操作或代码块结束操作要使用的状态信息。

RegisterOperationBlockAction(Action<OperationBlockAnalysisContext>)

注册在对方法主体或显示在方法主体外部的表达式进行语义分析后要执行的操作。 操作块操作报告 Diagnostic有关操作块的 。

RegisterOperationBlockStartAction(Action<OperationBlockStartAnalysisContext>)

注册一个操作,该操作将在方法主体或显示在方法主体外部的表达式的语义分析开始时执行。 操作块启动操作可以注册其他操作和/或收集要用于诊断分析的状态信息,但本身不能报告任何 Diagnostic

RegisterSemanticModelAction(Action<SemanticModelAnalysisContext>)

注册在完成文档的语义分析时要执行的操作,此操作将对文档的 执行 SemanticModel 。 语义模型操作报告 Diagnostic有关模型的 。

RegisterSymbolAction(Action<SymbolAnalysisContext>, ImmutableArray<SymbolKind>)

使用适当的 Kind 注册在 完成语义分析 ISymbol 时要执行的操作。 符号操作报告 Diagnostic有关 ISymbol的 。

RegisterSymbolAction(Action<SymbolAnalysisContext>, SymbolKind[])

使用适当的 Kind 注册在 完成语义分析 ISymbol 时要执行的操作。 符号操作报告 Diagnostic有关 ISymbol的 。

RegisterSymbolStartAction(Action<SymbolStartAnalysisContext>, SymbolKind)

使用适当的 Kind 注册一个操作,该操作将在语义分析 ISymbol 开始时对 及其成员执行。

RegisterSyntaxNodeAction<TLanguageKindEnum>(Action<SyntaxNodeAnalysisContext>, ImmutableArray<TLanguageKindEnum>)

使用适当的 Kind 注册在 完成语义分析 SyntaxNode 时要执行的操作。 语法节点操作可以报告 Diagnostic有关 SyntaxNode的 ,还可以收集其他语法节点操作或代码块结束操作要使用的状态信息。

RegisterSyntaxNodeAction<TLanguageKindEnum>(Action<SyntaxNodeAnalysisContext>, TLanguageKindEnum[])

使用适当的 Kind 注册在 完成语义分析 SyntaxNode 时要执行的操作。 语法节点操作可以报告 Diagnostic有关 SyntaxNode的 ,还可以收集其他语法节点操作或代码块结束操作要使用的状态信息。

RegisterSyntaxTreeAction(Action<SyntaxTreeAnalysisContext>)

注册在代码文档分析完成后要执行的操作。 语法树操作报告 Diagnostic有关 SyntaxTree 文档的 。

TryGetValue<TValue>(AdditionalText, AdditionalTextValueProvider<TValue>, TValue)

尝试计算或获取给定 为给定 valueProvidertext提供的缓存值。 请注意,对 {valueProvidertext} 充当键。 跨分析器操作和/或分析器实例重用同一 valueProvider 实例可以通过避免重新计算值来提高分析器的整体性能。

TryGetValue<TValue>(SourceText, SourceTextValueProvider<TValue>, TValue)

尝试计算或获取给定 为给定 valueProvidertext提供的缓存值。 请注意,对 {valueProvidertext} 充当键。 跨分析器操作和/或分析器实例重用同一 valueProvider 实例可以通过避免重新计算值来提高分析器的整体性能。

适用于