本文整理汇总了C#中CompilationStartAnalysisContext.RegisterCompilationEndAction方法的典型用法代码示例。如果您正苦于以下问题:C# CompilationStartAnalysisContext.RegisterCompilationEndAction方法的具体用法?C# CompilationStartAnalysisContext.RegisterCompilationEndAction怎么用?C# CompilationStartAnalysisContext.RegisterCompilationEndAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CompilationStartAnalysisContext
的用法示例。
在下文中一共展示了CompilationStartAnalysisContext.RegisterCompilationEndAction方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnCompilationStart
private void OnCompilationStart(CompilationStartAnalysisContext context)
{
_candidateReadonlyFields = new HashSet<IFieldSymbol>();
_writtenFields = new HashSet<IFieldSymbol>();
_internalsVisibleToAttribute = context.Compilation.GetTypeByMetadataName(
"System.Runtime.CompilerServices.InternalsVisibleToAttribute");
context.RegisterSymbolAction(LocateCandidateReadonlyFields, SymbolKind.Field);
context.RegisterSyntaxNodeAction(CheckForAssignment, s_compoundAssignmentExpressionKinds);
context.RegisterSyntaxNodeAction(CheckForRefOrOutParameter, SyntaxKind.Argument);
context.RegisterSyntaxNodeAction(CheckForExternMethodWithRefParameters, SyntaxKind.MethodDeclaration);
context.RegisterSyntaxNodeAction(CheckForExternIndexer, SyntaxKind.IndexerDeclaration);
context.RegisterSyntaxNodeAction(CheckForInvocations, SyntaxKind.InvocationExpression);
context.RegisterCompilationEndAction(ReportUnwrittenFields);
}
示例2: OnCompilationStart
public override void OnCompilationStart(CompilationStartAnalysisContext context)
{
// Read the file line-by-line to get the terms.
var additionalAnalyzerFiles = context.Options.AdditionalFiles.Where(af => af.Path.IndexOf(s_analyzerName, 0, StringComparison.OrdinalIgnoreCase) >= 0);
if (!additionalAnalyzerFiles.Any())
return;
lock (_apisToEnsureExist)
{
foreach (string api in ReadRequiredAPIsFromFiles(additionalAnalyzerFiles))
{
_apisToEnsureExist.Add(api);
}
}
context.RegisterCompilationEndAction(OnCompilationEnd);
context.RegisterSymbolAction(AnalyzeSymbol, SymbolKind.Method, SymbolKind.Event);
}
示例3: SetupAnalysis
//creates an instance of a class to perform the analysis statefully, and registers for various actions
private void SetupAnalysis(CompilationStartAnalysisContext context)
{
//state collector
CompilationAnalyzer compilationAnalyzer = new CompilationAnalyzer();
//collects all class, method, field, and property symbols as state
context.RegisterSymbolAction(compilationAnalyzer.AddClass, SymbolKind.NamedType);
context.RegisterSymbolAction(compilationAnalyzer.AddMethod, SymbolKind.Method);
context.RegisterSymbolAction(compilationAnalyzer.AddField, SymbolKind.Field);
context.RegisterSymbolAction(compilationAnalyzer.AddProperty, SymbolKind.Property);
//analyzes the state that has been collected
context.RegisterCompilationEndAction(compilationAnalyzer.ReportCompilationEndDiagnostics);
}
示例4: OnCompilationStart
private void OnCompilationStart(CompilationStartAnalysisContext compilationContext)
{
var additionalFiles = compilationContext.Options.AdditionalFiles;
if (!_extraAdditionalFiles.IsDefaultOrEmpty)
{
additionalFiles = additionalFiles.AddRange(_extraAdditionalFiles);
}
ApiData shippedData;
ApiData unshippedData;
if (!TryGetApiData(additionalFiles, compilationContext.CancellationToken, out shippedData, out unshippedData))
{
return;
}
List<Diagnostic> errors;
if (!ValidateApiFiles(shippedData, unshippedData, out errors))
{
compilationContext.RegisterCompilationEndAction(context =>
{
foreach (var cur in errors)
{
context.ReportDiagnostic(cur);
}
});
return;
}
var impl = new Impl(shippedData, unshippedData);
compilationContext.RegisterSymbolAction(
impl.OnSymbolAction,
SymbolKind.NamedType,
SymbolKind.Event,
SymbolKind.Field,
SymbolKind.Method);
compilationContext.RegisterCompilationEndAction(impl.OnCompilationEnd);
}
示例5: CreateAnalyzerWithinCompilation
public void CreateAnalyzerWithinCompilation(CompilationStartAnalysisContext context)
{
context.RegisterCompilationEndAction(AnalyzeCompilation);
}
示例6: HandleCompilationStart
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
{
Analyzer analyzer = new Analyzer();
context.RegisterSyntaxTreeAction(analyzer.HandleSyntaxTree);
context.RegisterCompilationEndAction(analyzer.HandleCompilation);
}
示例7: Initialize
/// <summary>
/// Called once at session start to register actions in the analysis context.
/// </summary>
protected override void Initialize(CompilationStartAnalysisContext context)
{
context.RegisterSymbolAction(AnalyzeType, SymbolKind.NamedType);
context.RegisterSymbolAction(AnalyzeMember, SymbolKind.Method, SymbolKind.Property, SymbolKind.Event);
context.RegisterCompilationEndAction(AnalyzeCompilation);
}