为什么我的 C# 分析器不显示消息 (DiagnosticSeverity.Info)

问题描述 投票:0回答:1

最近开始摆弄 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));
    }
}
c# roslyn-code-analysis
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.