File: DiagnosticDescriptors.cs
Web Access
Project: src\src\tools\illink\src\ILLink.RoslynAnalyzer\ILLink.RoslynAnalyzer.csproj (ILLink.RoslynAnalyzer)
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
 
using ILLink.Shared;
using Microsoft.CodeAnalysis;
 
namespace ILLink.RoslynAnalyzer
{
    public static class DiagnosticDescriptors
    {
        public static DiagnosticDescriptor GetDiagnosticDescriptor(DiagnosticId diagnosticId)
        {
            var diagnosticString = new DiagnosticString(diagnosticId);
            return new DiagnosticDescriptor(diagnosticId.AsString(),
                diagnosticString.GetTitleFormat(),
                diagnosticString.GetMessageFormat(),
                diagnosticId.GetDiagnosticCategory(),
                DiagnosticSeverity.Warning,
                true,
                diagnosticId.GetHelpUri());
        }
 
        public static DiagnosticDescriptor GetDiagnosticDescriptor(DiagnosticId diagnosticId, DiagnosticString diagnosticString)
            => new DiagnosticDescriptor(diagnosticId.AsString(),
                diagnosticString.GetTitle(),
                diagnosticString.GetMessage(),
                diagnosticId.GetDiagnosticCategory(),
                DiagnosticSeverity.Warning,
                true,
                diagnosticId.GetHelpUri());
 
        public static DiagnosticDescriptor GetDiagnosticDescriptor(DiagnosticId diagnosticId,
            LocalizableResourceString? lrsTitle = null,
            LocalizableResourceString? lrsMessage = null,
            string? diagnosticCategory = null,
            DiagnosticSeverity diagnosticSeverity = DiagnosticSeverity.Warning,
            bool isEnabledByDefault = true,
            string? helpLinkUri = null)
        {
            helpLinkUri ??= diagnosticId.GetHelpUri();
 
            if (lrsTitle == null || lrsMessage == null)
            {
                var diagnosticString = new DiagnosticString(diagnosticId);
                return new DiagnosticDescriptor(diagnosticId.AsString(),
                    diagnosticString.GetTitleFormat(),
                    diagnosticString.GetMessageFormat(),
                    diagnosticCategory ?? diagnosticId.GetDiagnosticCategory(),
                    diagnosticSeverity,
                    isEnabledByDefault,
                    helpLinkUri);
            }
 
            return new DiagnosticDescriptor(diagnosticId.AsString(),
                lrsTitle!,
                lrsMessage!,
                diagnosticCategory ?? diagnosticId.GetDiagnosticCategory(),
                diagnosticSeverity,
                isEnabledByDefault,
                helpLinkUri);
        }
    }
}