| File: DiagnosticAnalyzer\AnalyzerReference.cs | Web Access |
| Project: src\roslyn\src\Compilers\Core\Portable\Microsoft.CodeAnalysis.csproj (Microsoft.CodeAnalysis) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.Collections.Immutable; namespace Microsoft.CodeAnalysis.Diagnostics { /// <summary> /// Represents an analyzer assembly reference that contains diagnostic analyzers. /// </summary> /// <remarks> /// Represents a logical location of the analyzer reference, not the content of the reference. /// The content might change in time. A snapshot is taken when the compiler queries the reference for its analyzers. /// </remarks> public abstract class AnalyzerReference { protected AnalyzerReference() { } /// <summary> /// Full path describing the location of the analyzer reference, or null if the reference has no location. /// </summary> public abstract string? FullPath { get; } /// <summary> /// Path or name used in error messages to identity the reference. /// </summary> /// <remarks> /// Should not be null. /// </remarks> public virtual string Display { get { return string.Empty; } } /// <summary> /// A unique identifier for this analyzer reference. /// </summary> /// <remarks> /// Should not be null. /// Note that this and <see cref="FullPath"/> serve different purposes. An analyzer reference may not /// have a path, but it always has an ID. Further, two analyzer references with different paths may /// represent two copies of the same analyzer, in which case the IDs should also be the same. /// </remarks> public abstract object Id { get; } /// <summary> /// Gets all the diagnostic analyzers defined in this assembly reference, irrespective of the language supported by the analyzer. /// Use this method only if you need all the analyzers defined in the assembly, without a language context. /// In most instances, either the analyzer reference is associated with a project or is being queried for analyzers in a particular language context. /// If so, use <see cref="GetAnalyzers(string)"/> method. /// </summary> public abstract ImmutableArray<DiagnosticAnalyzer> GetAnalyzersForAllLanguages(); /// <summary> /// Gets all the diagnostic analyzers defined in this assembly reference for the given <paramref name="language"/>. /// </summary> /// <param name="language">Language name.</param> public abstract ImmutableArray<DiagnosticAnalyzer> GetAnalyzers(string language); /// <summary> /// Gets all the source generators defined in this assembly reference. /// </summary> public virtual ImmutableArray<ISourceGenerator> GetGeneratorsForAllLanguages() => ImmutableArray<ISourceGenerator>.Empty; [Obsolete("Use GetGenerators(string language) or GetGeneratorsForAllLanguages()")] public virtual ImmutableArray<ISourceGenerator> GetGenerators() => ImmutableArray<ISourceGenerator>.Empty; /// <summary> /// Gets all the generators defined in this assembly reference for the given <paramref name="language"/>. /// </summary> /// <param name="language">Language name.</param> public virtual ImmutableArray<ISourceGenerator> GetGenerators(string language) => ImmutableArray<ISourceGenerator>.Empty; } }