本文整理汇总了C#中AnalysisContext.RegisterCompilationAction方法的典型用法代码示例。如果您正苦于以下问题:C# AnalysisContext.RegisterCompilationAction方法的具体用法?C# AnalysisContext.RegisterCompilationAction怎么用?C# AnalysisContext.RegisterCompilationAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AnalysisContext
的用法示例。
在下文中一共展示了AnalysisContext.RegisterCompilationAction方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Initialize
public override void Initialize(AnalysisContext analysisContext)
{
analysisContext.EnableConcurrentExecution();
analysisContext.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
analysisContext.RegisterCompilationAction(AnalyzeCompilation);
}
示例2: Initialize
public override void Initialize(AnalysisContext analysisContext)
{
analysisContext.RegisterCompilationStartAction(compilationContext =>
{
// The compilation start action cannot report a diagnostic,
// so we do not report T1002 here.
compilationContext.RegisterSymbolAction(context =>
{
// We do not report a callback here, as the analysis itself serves.
AnalyzeSymbol((INamedTypeSymbol)context.Symbol, context.ReportDiagnostic);
},
SymbolKind.NamedType);
compilationContext.RegisterCompilationEndAction(context =>
{
string targetName = Path.GetFileName(context.Compilation.References.First().Display);
context.ReportDiagnostic(
CreateDiagnostic(CallbackReportingRule, "RegisterCompilationEndAction", targetName));
});
});
analysisContext.RegisterCompilationAction(context =>
{
string targetName = Path.GetFileName(context.Compilation.References.First().Display);
context.ReportDiagnostic(
CreateDiagnostic(CallbackReportingRule, "RegisterCompilationAction", targetName));
});
}
示例3: Initialize
public override void Initialize(AnalysisContext analysisContext)
{
analysisContext.RegisterCompilationAction(
(context) =>
{
context.ReportDiagnostic(CodeAnalysis.Diagnostic.Create(s_rule, Location.None, messageArgs: Id));
}
);
}
示例4: Initialize
/// <summary>
/// Called once at session start to register actions in the analysis context.
/// </summary>
/// <param name="context">object that allows the assignment of callbacks</param>
public override void Initialize(AnalysisContext context)
{
#if DEBUG
Logger.AddHooks(Logger.LogToFile([email protected]"C:\Users\Public\Documents\semdiff_logs_{Guid.NewGuid()}.txt"));
Logger.Suppress();
#endif
SetupLibGit2Sharp();
context.RegisterCompilationAction(OnCompilation);
}
示例5: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterCompilationAction(compilationContext =>
{
// With location diagnostic.
var location = compilationContext.Compilation.SyntaxTrees.First().GetRoot().GetLocation();
compilationContext.ReportDiagnostic(Diagnostic.Create(Descriptor1, location, s_properties));
// No location diagnostic.
compilationContext.ReportDiagnostic(Diagnostic.Create(Descriptor2, Location.None, s_properties));
});
}
示例6: Initialize
public override void Initialize(AnalysisContext c)
{
c.RegisterCodeBlockAction(b => ThrowIfMatch(nameof(c.RegisterCodeBlockAction), new AnalysisContextInfo(b.SemanticModel.Compilation, b.OwningSymbol, b.CodeBlock)));
c.RegisterCodeBlockStartAction<SyntaxKind>(b => ThrowIfMatch(nameof(c.RegisterCodeBlockStartAction), new AnalysisContextInfo(b.SemanticModel.Compilation, b.OwningSymbol, b.CodeBlock)));
c.RegisterCompilationAction(b => ThrowIfMatch(nameof(c.RegisterCompilationAction), new AnalysisContextInfo(b.Compilation)));
c.RegisterCompilationStartAction(b => ThrowIfMatch(nameof(c.RegisterCompilationStartAction), new AnalysisContextInfo(b.Compilation)));
c.RegisterOperationAction(b => ThrowIfMatch(nameof(c.RegisterOperationAction), new AnalysisContextInfo(b.Compilation, b.Operation)), OperationKind.ReturnStatement);
c.RegisterOperationBlockAction(b => ThrowIfMatch(nameof(c.RegisterOperationBlockAction), new AnalysisContextInfo(b.Compilation, b.OwningSymbol)));
c.RegisterSemanticModelAction(b => ThrowIfMatch(nameof(c.RegisterSemanticModelAction), new AnalysisContextInfo(b.SemanticModel)));
c.RegisterSymbolAction(b => ThrowIfMatch(nameof(c.RegisterSymbolAction), new AnalysisContextInfo(b.Compilation, b.Symbol)), SymbolKind.NamedType);
c.RegisterSyntaxNodeAction(b => ThrowIfMatch(nameof(c.RegisterSyntaxNodeAction), new AnalysisContextInfo(b.SemanticModel.Compilation, b.Node)), SyntaxKind.ReturnStatement);
c.RegisterSyntaxTreeAction(b => ThrowIfMatch(nameof(c.RegisterSyntaxTreeAction), new AnalysisContextInfo(b.Compilation, b.Tree)));
}
示例7: Initialize
public override void Initialize(AnalysisContext analysisContext)
{
analysisContext.RegisterCompilationAction(AnalyzeCompilation);
}
示例8: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterCompilationAction(compilationContext =>
compilationContext.ReportDiagnostic(CodeAnalysis.Diagnostic.Create(UnsupportedDescriptor, Location.None)));
}
示例9: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(c => c.ReportDiagnostic(Diagnostic.Create(s_syntaxRule, c.Tree.GetRoot().GetLocation())));
context.RegisterSemanticModelAction(c => c.ReportDiagnostic(Diagnostic.Create(s_semanticRule, c.SemanticModel.SyntaxTree.GetRoot().GetLocation())));
context.RegisterCompilationAction(c => c.ReportDiagnostic(Diagnostic.Create(s_compilationRule, c.Compilation.SyntaxTrees.First().GetRoot().GetLocation())));
}
示例10: Initialize
public override void Initialize(AnalysisContext analysisContext)
{
analysisContext.RegisterCompilationAction(AnalyzeCompilation);
analysisContext.RegisterSymbolAction(AnalyzeSymbol, SymbolKind.NamedType);
}
示例11: InitializeProtected
/// <summary>
/// Called once on concrete analyzers at session start to register actions in the analysis context.
/// </summary>
/// <param name="context">The analysis context.</param>
protected override void InitializeProtected(AnalysisContext context)
{
context.RegisterCodeBlockAction(AnalyzeCodeBlock);
context.RegisterCompilationAction(AnalyzeCompilation);
context.RegisterSemanticModelAction(AnalyzeSemanticModel);
context.RegisterSyntaxTreeAction(AnalyzeSyntaxTree);
context.RegisterSymbolAction(AnalyzeNamedTypeSymbol, SymbolKind.NamedType);
}
示例12: Initialize
public override void Initialize(AnalysisContext analysisContext)
{
analysisContext.RegisterSymbolAction(saContext =>
{
var symbol = saContext.Symbol;
AnalyzeSymbol(saContext.ReportDiagnostic, symbol);
switch(symbol.Kind)
{
case SymbolKind.NamedType:
{
var namedType = symbol as INamedTypeSymbol;
AnalyzeSymbols(saContext.ReportDiagnostic, namedType.TypeParameters);
if (namedType.TypeKind == TypeKind.Delegate && namedType.DelegateInvokeMethod != null)
{
AnalyzeSymbols(saContext.ReportDiagnostic, namedType.DelegateInvokeMethod.Parameters);
}
return;
}
case SymbolKind.Method:
{
var methodSymbol = symbol as IMethodSymbol;
if (!methodSymbol.IsAccessorMethod())
{
AnalyzeSymbols(saContext.ReportDiagnostic, methodSymbol.Parameters);
AnalyzeSymbols(saContext.ReportDiagnostic, methodSymbol.TypeParameters);
}
return;
}
case SymbolKind.Property:
{
var propertySymbol = symbol as IPropertySymbol;
AnalyzeSymbols(saContext.ReportDiagnostic, propertySymbol.Parameters);
return;
}
}
},
SymbolKind.NamedType,
SymbolKind.Method, SymbolKind.Property, SymbolKind.Field, SymbolKind.Event);
analysisContext.RegisterCompilationAction(caContext =>
{
var compilation = caContext.Compilation;
AnalyzeSymbol(caContext.ReportDiagnostic, compilation.Assembly);
});
}
示例13: Initialize
public override void Initialize(AnalysisContext analysisContext)
{
analysisContext.EnableConcurrentExecution();
analysisContext.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
analysisContext.RegisterSymbolAction(symbolAnalysisContext =>
{
var symbol = symbolAnalysisContext.Symbol;
switch (symbol.Kind)
{
case SymbolKind.Namespace:
{
if (ContainsUnderScore(symbol.Name))
{
symbolAnalysisContext.ReportDiagnostic(symbol.CreateDiagnostic(NamespaceRule, symbol.ToDisplayString()));
}
return;
}
case SymbolKind.NamedType:
{
var namedType = symbol as INamedTypeSymbol;
AnalyzeTypeParameters(symbolAnalysisContext, namedType.TypeParameters);
if (namedType.TypeKind == TypeKind.Delegate &&
namedType.DelegateInvokeMethod != null)
{
AnalyzeParameters(symbolAnalysisContext, namedType.DelegateInvokeMethod.Parameters);
}
if (!ContainsUnderScore(symbol.Name) || !symbol.IsPublic())
{
return;
}
symbolAnalysisContext.ReportDiagnostic(symbol.CreateDiagnostic(TypeRule, symbol.ToDisplayString()));
return;
}
case SymbolKind.Field:
{
var fieldSymbol = symbol as IFieldSymbol;
if (ContainsUnderScore(symbol.Name) && symbol.IsPublic() && (fieldSymbol.IsConst || (fieldSymbol.IsStatic && fieldSymbol.IsReadOnly)))
{
symbolAnalysisContext.ReportDiagnostic(symbol.CreateDiagnostic(MemberRule, symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat)));
return;
}
return;
}
default:
{
var methodSymbol = symbol as IMethodSymbol;
if (methodSymbol != null)
{
if (methodSymbol.IsOperator())
{
// Do not flag for operators.
return;
}
AnalyzeParameters(symbolAnalysisContext, methodSymbol.Parameters);
AnalyzeTypeParameters(symbolAnalysisContext, methodSymbol.TypeParameters);
}
var propertySymbol = symbol as IPropertySymbol;
if (propertySymbol != null)
{
AnalyzeParameters(symbolAnalysisContext, propertySymbol.Parameters);
}
if (!ContainsUnderScore(symbol.Name) || IsInvalidSymbol(symbol))
{
return;
}
symbolAnalysisContext.ReportDiagnostic(symbol.CreateDiagnostic(MemberRule, symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat)));
return;
}
}
},
SymbolKind.Namespace, // Namespace
SymbolKind.NamedType, //Type
SymbolKind.Method, SymbolKind.Property, SymbolKind.Field, SymbolKind.Event // Members
);
analysisContext.RegisterCompilationAction(compilationAnalysisContext =>
{
var compilation = compilationAnalysisContext.Compilation;
if (ContainsUnderScore(compilation.AssemblyName))
{
compilationAnalysisContext.ReportDiagnostic(compilation.Assembly.CreateDiagnostic(AssemblyRule, compilation.AssemblyName));
}
});
}