Поделиться через


AnalysisContext Класс

Определение

Контекст для инициализации анализатора. Инициализация анализатора может использовать AnalysisContext для регистрации действий, выполняемых в любом из:

  • начало компиляции,
  • конец компиляции,
  • завершение синтаксического анализа документа кода,
  • завершение семантического анализа документа кода,
  • завершение семантического анализа символа,
  • начало семантического анализа тела метода или выражения, появляющегося за пределами тела метода;
  • завершение семантического анализа тела метода или выражения, появляющегося за пределами тела метода, или
  • завершение семантического анализа узла синтаксиса.
public ref class AnalysisContext abstract
public abstract class AnalysisContext
type AnalysisContext = class
Public MustInherit Class AnalysisContext
Наследование
AnalysisContext

Конструкторы

AnalysisContext()

Контекст для инициализации анализатора. Инициализация анализатора может использовать AnalysisContext для регистрации действий, выполняемых в любом из:

  • начало компиляции,
  • конец компиляции,
  • завершение синтаксического анализа документа кода,
  • завершение семантического анализа документа кода,
  • завершение семантического анализа символа,
  • начало семантического анализа тела метода или выражения, появляющегося за пределами тела метода;
  • завершение семантического анализа тела метода или выражения, появляющегося за пределами тела метода, или
  • завершение семантического анализа узла синтаксиса.

Свойства

MinimumReportedSeverity

Указывает минимальный уровень серьезности диагностики для данного контекста анализа. Диагностика анализатора с уровнем серьезности ниже этой серьезности не сообщаются.

Методы

ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags)

Настройте режим анализа созданного кода для этого анализатора. Ненастроенные анализаторы по умолчанию будут использовать соответствующий режим по умолчанию для созданного кода. Рекомендуется, чтобы анализатор вызвал этот API с необходимым GeneratedCodeAnalysisFlags параметром.

EnableConcurrentExecution()

Включите параллельное выполнение действий анализатора, зарегистрированных этим анализатором. Анализатор, который регистрируется для параллельного выполнения, может иметь более высокую производительность, чем неконтяционный анализатор. Однако такой анализатор должен гарантировать, что его действия могут выполняться правильно в параллельном режиме.

RegisterAdditionalFileAction(Action<AdditionalFileAnalysisContext>)

Зарегистрируйте действие, выполняемое для каждого документа, отличного от кода. Дополнительное действие файла сообщает Diagnosticо документе AdditionalText .

RegisterCodeBlockAction(Action<CodeBlockAnalysisContext>)

Зарегистрируйте действие, выполняемое после семантического анализа текста метода или выражения, появляющегося за пределами тела метода. Действие блока кода сообщает о Diagnosticблоках кода.

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

Зарегистрируйте действие, выполняемое в начале семантического анализа текста метода или выражения, появляющегося за пределами тела метода. Действие запуска блока кода может регистрировать другие действия и (или) собирать сведения о состоянии для использования в диагностическом анализе, но сам не может сообщать о каких-либо Diagnosticоперациях.

RegisterCompilationAction(Action<CompilationAnalysisContext>)

Зарегистрируйте действие, выполняемое для полной компиляции. Действие компиляции сообщает о DiagnosticCompilation.

RegisterCompilationStartAction(Action<CompilationStartAnalysisContext>)

Зарегистрируйте действие, выполняемое при начале компиляции. Действие начала компиляции может регистрировать другие действия и (или) собирать сведения о состоянии для использования в диагностическом анализе, но сам не может сообщать о каких-либо Diagnosticсобытиях.

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

Зарегистрируйте действие, выполняемое по завершении семантического анализа объекта , с помощью соответствующего IOperation типа. Действие операции может сообщать о DiagnosticIOperations, а также собирать сведения о состоянии для использования другими действиями операции или конечными действиями блока кода.

RegisterOperationAction(Action<OperationAnalysisContext>, OperationKind[])

Зарегистрируйте действие, выполняемое по завершении семантического анализа объекта , с помощью соответствующего IOperation типа. Действие операции может сообщать о DiagnosticIOperations, а также собирать сведения о состоянии для использования другими действиями операции или конечными действиями блока кода.

RegisterOperationBlockAction(Action<OperationBlockAnalysisContext>)

Зарегистрируйте действие, выполняемое после семантического анализа текста метода или выражения, появляющегося за пределами тела метода. Действие блока операции сообщает о Diagnosticблоках операций.

RegisterOperationBlockStartAction(Action<OperationBlockStartAnalysisContext>)

Зарегистрируйте действие, выполняемое в начале семантического анализа текста метода или выражения, появляющегося за пределами тела метода. Действие запуска блока операций может регистрировать другие действия и (или) собирать сведения о состоянии для использования в диагностическом анализе, но сам по себе не может сообщать о каких-либо Diagnosticоперациях.

RegisterSemanticModelAction(Action<SemanticModelAnalysisContext>)

Зарегистрируйте действие, выполняемое по завершении семантического анализа документа, который будет работать с документом SemanticModel . Действие семантической модели сообщает Diagnosticо модели.

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

Зарегистрируйте действие, выполняемое по завершении семантического анализа объекта , с помощью соответствующего ISymbol типа. Действие символа сообщает о DiagnosticISymbols.

RegisterSymbolAction(Action<SymbolAnalysisContext>, SymbolKind[])

Зарегистрируйте действие, выполняемое по завершении семантического анализа объекта , с помощью соответствующего ISymbol типа. Действие символа сообщает о DiagnosticISymbols.

RegisterSymbolStartAction(Action<SymbolStartAnalysisContext>, SymbolKind)

Зарегистрируйте действие, выполняемое в начале семантического анализа ISymbol объекта и его членов, с помощью соответствующего типа.

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

Зарегистрируйте действие, выполняемое по завершении семантического анализа объекта SyntaxNode , с помощью соответствующего типа. Действие синтаксического узла может сообщать о DiagnosticSyntaxNodes, а также собирать сведения о состоянии, которые будут использоваться другими синтаксические действия узла или завершаемыми действиями блока кода.

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

Зарегистрируйте действие, выполняемое по завершении семантического анализа объекта SyntaxNode , с помощью соответствующего типа. Действие синтаксического узла может сообщать о DiagnosticSyntaxNodes, а также собирать сведения о состоянии, которые будут использоваться другими синтаксические действия узла или завершаемыми действиями блока кода.

RegisterSyntaxTreeAction(Action<SyntaxTreeAnalysisContext>)

Зарегистрируйте действие, выполняемое по завершении синтаксического анализа документа кода. Действие синтаксического дерева сообщает Diagnosticо документе SyntaxTree .

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

Пытается вычислить или получить кэшированное значение, предоставленное заданным valueProvider для данного textобъекта . Обратите внимание, что пара {valueProvider, text} выступает в качестве ключа. Повторное использование одного и того же valueProvider экземпляра в действиях анализатора и (или) экземплярах анализатора может повысить общую производительность анализатора, избегая повторного вычислений значений.

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

Пытается вычислить или получить кэшированное значение, предоставленное заданным valueProvider для данного textобъекта . Обратите внимание, что пара {valueProvider, text} выступает в качестве ключа. Повторное использование одного и того же valueProvider экземпляра в действиях анализатора и (или) экземплярах анализатора может повысить общую производительность анализатора, избегая повторного вычислений значений.

Применяется к