|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace Microsoft.Build.Experimental.BuildCheck;
/// <summary>
/// Represents a rule that is a unit of a build check.
/// <see cref="Check"/> is a unit of executing the check, but it can be discovering multiple distinct violation types,
/// for this reason a single <see cref="Check"/> can expose multiple <see cref="CheckRule"/>s.
/// </summary>
public class CheckRule
{
/// <summary>
/// Creates the descriptor of the BuildCheck rule
/// </summary>
/// <param name="id">The id of the rule - used to denote the violation in the outputs</param>
/// <param name="title">The title of the rule - currently unused</param>
/// <param name="description">The detailed description of the rule - currently unused</param>
/// <param name="messageFormat">The message format to be used during reporting the violation.</param>
/// <param name="defaultConfiguration">The default config of this rule - applicable if user doesn't specify custom values in .editorconfig.</param>
/// <param name="helpLinkUri">Optional link to more detailed help for the violation.</param>
public CheckRule(
string id,
string title,
string description,
string messageFormat,
CheckConfiguration defaultConfiguration,
string helpLinkUri)
{
Id = id;
Title = title;
Description = description;
MessageFormat = messageFormat;
DefaultConfiguration = defaultConfiguration;
HelpLinkUri = helpLinkUri;
}
/// <summary>
/// Creates the descriptor of the BuildCheck rule
/// </summary>
/// <param name="id">The id of the rule - used to denote the violation in the outputs</param>
/// <param name="title">The title of the rule - currently unused</param>
/// <param name="description">The detailed description of the rule - currently unused</param>
/// <param name="messageFormat">The message format to be used during reporting the violation.</param>
/// <param name="defaultConfiguration">The default config of this rule - applicable if user doesn't specify custom values in .editorconfig.</param>
public CheckRule(
string id,
string title,
string description,
string messageFormat,
CheckConfiguration defaultConfiguration)
{
Id = id;
Title = title;
Description = description;
MessageFormat = messageFormat;
DefaultConfiguration = defaultConfiguration;
}
/// <summary>
/// The identification of the rule.
///
/// Some background on ids:
/// * https://github.com/dotnet/roslyn-analyzers/blob/main/src/Utilities/Compiler/DiagnosticCategoryAndIdRanges.txt
/// * https://github.com/dotnet/roslyn/issues/40351
///
/// Quick suggestion now - let's force external ids to start with 'X', for ours - avoid 'MSB'
/// maybe - BT - build static/styling; BA - build authoring; BE - build execution/environment; BC - build configuration
/// </summary>
public string Id { get; }
/// <summary>
/// The descriptive short summary of the rule.
/// </summary>
public string Title { get; }
/// <summary>
/// More detailed description of the violation the rule can be reporting (with possible suggestions).
/// </summary>
public string Description { get; }
/// <summary>
/// Message format that will be used by the actual reports (<see cref="BuildCheckResult"/>) - those will just supply the actual arguments.
/// </summary>
public string MessageFormat { get; }
public string HelpLinkUri { get; } = string.Empty;
/// <summary>
/// The default configuration - overridable by the user via .editorconfig.
/// If no user specified configuration is provided, this default will be used.
/// </summary>
public CheckConfiguration DefaultConfiguration { get; }
}
|