Share via


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>)

註冊動作,以適當種類完成語意分析 IOperation 時執行。 作業動作可以報告 Diagnostics 的相關信息 IOperation,也可以收集其他作業動作或程式代碼區塊結束動作要使用的狀態資訊。

RegisterOperationAction(Action<OperationAnalysisContext>, OperationKind[])

註冊動作,以適當種類完成語意分析 IOperation 時執行。 作業動作可以報告 Diagnostics 的相關信息 IOperation,也可以收集其他作業動作或程式代碼區塊結束動作要使用的狀態資訊。

RegisterOperationBlockAction(Action<OperationBlockAnalysisContext>)

註冊在方法主體的語意分析之後要執行的動作,或出現在方法主體外部的表達式。 作業區塊動作會報告 Diagnostic作業區塊的相關信息。

RegisterOperationBlockStartAction(Action<OperationBlockStartAnalysisContext>)

註冊要於方法主體的語意分析開始時執行的動作,或出現在方法主體外部的表達式。 作業區塊啟動動作可以註冊其他動作和/或收集要用於診斷分析的狀態資訊,但無法自行報告任何 Diagnostic動作。

RegisterSemanticModelAction(Action<SemanticModelAnalysisContext>)

註冊要於文件語意分析完成時執行的動作,這會在檔的 上 SemanticModel 運作。 語意模型動作會報告 Diagnostic有關模型的資訊。

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

註冊動作,以適當種類完成語意分析 ISymbol 時執行。 符號動作會報告 Diagnostic關於 ISymbols。

RegisterSymbolAction(Action<SymbolAnalysisContext>, SymbolKind[])

註冊動作,以適當種類完成語意分析 ISymbol 時執行。 符號動作會報告 Diagnostic關於 ISymbols。

RegisterSymbolStartAction(Action<SymbolStartAnalysisContext>, SymbolKind)

註冊一個動作,以在語意分析 ISymbol 開始時執行,以及其成員具有適當的Kind。

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

註冊動作,以適當種類完成語意分析 SyntaxNode 時執行。 語法節點動作可以報告 Diagnostics 的相關信息 SyntaxNode,也可以收集其他語法節點動作或程式代碼區塊結束動作要使用的狀態資訊。

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

註冊動作,以適當種類完成語意分析 SyntaxNode 時執行。 語法節點動作可以報告 Diagnostics 的相關信息 SyntaxNode,也可以收集其他語法節點動作或程式代碼區塊結束動作要使用的狀態資訊。

RegisterSyntaxTreeAction(Action<SyntaxTreeAnalysisContext>)

註冊要於程式代碼檔剖析完成時執行的動作。 語法樹狀結構動作會報告 Diagnostic檔的相關 SyntaxTree

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

嘗試計算或取得所指定 valueProvider 提供給的 text快取值。 請注意,配對 {valueProvidertext} 會做為索引鍵。 跨分析器動作和/或分析器實例重複使用相同的 valueProvider 實例,可以避免重新計算值來改善整體分析器效能。

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

嘗試計算或取得所指定 valueProvider 提供給的 text快取值。 請注意,配對 {valueProvidertext} 會做為索引鍵。 跨分析器動作和/或分析器實例重複使用相同的 valueProvider 實例,可以避免重新計算值來改善整體分析器效能。

適用於