mic*_*i-b 11 c# roslyn-code-analysis
最近开始摆弄 C# 分析器和生成器,我必须发现使用DiagnosticSeverity.Warning或 时报告的诊断显示得很好DiagnosticSeverity.Error,但使用 时则根本不显示DiagnosticSeverity.Info。
外部分析器似乎可以很好地报告消息,所以我想知道我做错了什么。
using System.Collections.Immutable;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Diagnostics;
namespace Sssl.Messaging.Analyzers;
[DiagnosticAnalyzer("C#")]
public class DummyAnalyzer : DiagnosticAnalyzer
{
private static readonly DiagnosticDescriptor TypeFoundDiagnostic = new
("SSSL001", "Named Type Found", "Found Named Type {0}", "Info", DiagnosticSeverity.Warning, true);
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics =>
ImmutableArray.Create(TypeFoundDiagnostic);
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics);
context.RegisterSymbolAction(AnalyzeSymbol, SymbolKind.NamedType);
}
private static void AnalyzeSymbol(SymbolAnalysisContext context)
{
context.ReportDiagnostic(Diagnostic.Create(TypeFoundDiagnostic, Location.None, context.Symbol.Name));
}
}
Run Code Online (Sandbox Code Playgroud)