Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix MessageResourceNames merging #2793

Merged
merged 4 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ReleaseHistory.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# SARIF Package Release History (SDK, Driver, Converters, and Multitool)
## **v4.5.3 [Sdk](https://www.nuget.org/packages/Sarif.Sdk/v4.5.3) | [Driver](https://www.nuget.org/packages/Sarif.Driver/v4.5.3) | [Converters](https://www.nuget.org/packages/Sarif.Converters/v4.5.3) | [Multitool](https://www.nuget.org/packages/Sarif.Multitool/v4.5.3) | [Multitool Library](https://www.nuget.org/packages/Sarif.Multitool.Library/v4.5.3)
* BUG: Restructure shared MessageResourceNames collections to ensure return of correct error messages.

## **v4.5.2 [Sdk](https://www.nuget.org/packages/Sarif.Sdk/v4.5.2) | [Driver](https://www.nuget.org/packages/Sarif.Driver/v4.5.2) | [Converters](https://www.nuget.org/packages/Sarif.Converters/v4.5.2) | [Multitool](https://www.nuget.org/packages/Sarif.Multitool/v4.5.2) | [Multitool Library](https://www.nuget.org/packages/Sarif.Multitool.Library/v4.5.2)
* BUG: Update Skimmer stack in Multitool.Library to support shared MessageResourceNames collections between base rules and their derivatives.
* BUG: Fix message strings to always assume {1} is reserved for the rule's service name.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
Expand All @@ -15,6 +16,10 @@ public class AdoReferenceFinalSchema

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.ADO1011_ReferenceFinalSchema_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>();

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ado });

protected override string ServiceName => RuleResources.ServiceName_ADO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
Expand All @@ -15,6 +16,10 @@ public class AdoProvideRequiredSarifLogProperties

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.ADO1013_ProvideRequiredSarifLogProperties_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>();

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ado });

protected override string ServiceName => RuleResources.ServiceName_ADO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
Expand All @@ -15,15 +16,21 @@ public class AdoProvideRequiredRunProperties

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.ADO1014_ProvideRequiredRunProperties_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>()
{
nameof(RuleResources.ADO1014_AdoProvideRequiredRunProperties_Error_MissingAutomationDetails_Text),
nameof(RuleResources.ADO1014_AdoProvideRequiredRunProperties_Error_MissingAutomationDetailsId_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ado });

protected override string ServiceName => RuleResources.ServiceName_ADO;

public AdoProvideRequiredRunProperties()
{
this.DefaultConfiguration.Level = FailureLevel.Error;
this.MessageResourceNames.Add(nameof(RuleResources.ADO1014_AdoProvideRequiredRunProperties_Error_MissingAutomationDetails_Text));
this.MessageResourceNames.Add(nameof(RuleResources.ADO1014_AdoProvideRequiredRunProperties_Error_MissingAutomationDetailsId_Text));
}

protected override void Analyze(Run run, string runPointer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
Expand All @@ -15,14 +16,20 @@ public class AdoProvideRequiredResultProperties

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.ADO1015_ProvideRequiredResultProperties_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>()
{
nameof(RuleResources.ADO1015_ProvideRequiredResultProperties_Error_MissingRuleId_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new(new[] { RuleKind.Ado });

protected override string ServiceName => RuleResources.ServiceName_ADO;

public AdoProvideRequiredResultProperties()
{
this.DefaultConfiguration.Level = FailureLevel.Error;
this.MessageResourceNames.Add(nameof(RuleResources.ADO1015_ProvideRequiredResultProperties_Error_MissingRuleId_Text));
}

protected override void Analyze(Result result, string resultPointer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,24 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
public class AdoProvideRequiredLocationProperties
: SarifValidationSkimmerBase
: BaseProvideRequiredLocationProperties
{
/// <summary>
/// ADO1016
/// </summary>
public override string Id => RuleId.ADOProvideRequiredLocationProperties;

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.ADO1016_ProvideRequiredLocationProperties_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>();

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ado });

public AdoProvideRequiredLocationProperties()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
Expand All @@ -15,6 +16,10 @@ public class AdoProvideRequiredPhysicalLocationProperties

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.ADO1017_ProvideRequiredPhysicalLocationProperties_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>();

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ado });

protected override string ServiceName => RuleResources.ServiceName_ADO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

using Microsoft.Json.Pointer;

Expand All @@ -11,20 +12,26 @@ public class AdoProvideRequiredToolProperties
: BaseProvideRequiredToolProperties
{
/// <summary>
/// ADO1003
/// ADO1018
/// </summary>
public override string Id => RuleId.ADOProvideToolDriverProperties;

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.ADO1018_ProvideRequiredToolProperties_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>()
{
nameof(RuleResources.ADO1018_ProvideRequiredToolProperties_Error_MissingDriverFullName_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ado });

protected override string ServiceName => RuleResources.ServiceName_ADO;

public AdoProvideRequiredToolProperties()
{
this.DefaultConfiguration.Level = FailureLevel.Error;
this.MessageResourceNames.Add(nameof(RuleResources.ADO1018_ProvideRequiredToolProperties_Error_MissingDriverFullName_Text));
}

protected override void Analyze(Run run, string runPointer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
Expand All @@ -15,14 +16,20 @@ public class AdoProvideRequiredReportingDescriptorProperties

public override MultiformatMessageString FullDescription => new MultiformatMessageString { Text = RuleResources.ADO2012_ProvideRequiredReportingDescriptorProperties_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>()
{
nameof(RuleResources.ADO2012_ProvideRequiredResultProperties_Error_MissingName_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ado });

protected override string ServiceName => RuleResources.ServiceName_ADO;

public AdoProvideRequiredReportingDescriptorProperties()
{
this.DefaultConfiguration.Level = FailureLevel.Error;
this.MessageResourceNames.Add(nameof(RuleResources.ADO2012_ProvideRequiredResultProperties_Error_MissingName_Text));
}

protected override void Analyze(ReportingDescriptor reportingDescriptor, string reportingDescriptorPointer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ public class BaseReferenceFinalSchema : SarifValidationSkimmerBase
/// </summary>
public override MultiformatMessageString FullDescription => new MultiformatMessageString();

private readonly List<string> _messageResourceNames = new List<string>
private readonly List<string> _baseMessageResourceNames = new List<string>
{
nameof(RuleResources.Base1011_ReferenceFinalSchema_Error_Default_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames;
protected ICollection<string> BaseMessageResourceNames => _baseMessageResourceNames;

protected override void Analyze(SarifLog log, string logPointer)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@ public class BaseProvideRequiredSarifLogProperties

public override MultiformatMessageString FullDescription => new MultiformatMessageString();

protected override ICollection<string> MessageResourceNames => new List<string> {
private readonly List<string> _baseMessageResourceNames = new List<string>
{
nameof(RuleResources.Base1013_MaximumRunsCount_Note_Default_Text),
nameof(RuleResources.Base1013_ProvideSchemaVersion_Warning_Default_Text),
nameof(RuleResources.Base1013_ProvideSchema_Warning_Default_Text),
nameof(RuleResources.Base1013_ReferenceFinalSchema_Error_Default_Text),
nameof(RuleResources.Base1013_SarifLogRunsArray_Note_Default_Text)
};
protected ICollection<string> BaseMessageResourceNames => _baseMessageResourceNames;

public virtual int MaximumRuns { get; set; } = int.MaxValue;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ public class BaseProvideRequiredRunProperties
{
public override string Id => string.Empty;

private readonly List<string> _messageResourceNames = new List<string>
private readonly List<string> _baseMessageResourceNames = new List<string>
{
nameof(RuleResources.Base1014_ProvideRequiredRunProperties_Error_MissingResultsArray_Text),
nameof(RuleResources.Base1014_ProvideRequiredRunProperties_Error_MissingTool_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames;
protected ICollection<string> BaseMessageResourceNames => _baseMessageResourceNames;

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ public class BaseProvideRequiredResultProperties
{
public override string Id => string.Empty;


private readonly List<string> _messageResourceNames = new List<string>
private readonly List<string> _baseMessageResourceNames = new List<string>
{
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_EmptyLocationsArray_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingLocationsArray_Text),
Expand All @@ -22,7 +21,7 @@ public class BaseProvideRequiredResultProperties
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingPartialFingerprints_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames;
protected ICollection<string> BaseMessageResourceNames => _baseMessageResourceNames;

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ public class BaseProvideRequiredLocationProperties
{
public override string Id => string.Empty;

private readonly List<string> _messageResourceNames = new List<string>
private readonly List<string> _baseMessageResourceNames = new List<string>
{
nameof(RuleResources.Base1016_ProvideRequiredLocationProperties_Error_MissingPhysicalLocation_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames;
protected ICollection<string> BaseMessageResourceNames => _baseMessageResourceNames;

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class BaseProvideRequiredPhysicalLocationProperties
{
public override string Id => string.Empty;

private readonly List<string> _messageResourceNames = new List<string>
private readonly List<string> _baseMessageResourceNames = new List<string>
{
nameof(RuleResources.Base1017_ProvideRequiredPhysicalLocationProperties_Error_MissingArtifactLocation_Text),
nameof(RuleResources.Base1017_ProvideRequiredPhysicalLocationProperties_Error_MissingRegion_Text),
Expand All @@ -23,7 +23,7 @@ public class BaseProvideRequiredPhysicalLocationProperties
nameof(RuleResources.SARIF1007_RegionPropertiesMustBeConsistent_Error_RegionStartPropertyMustBePresent_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames;
private ICollection<string> BaseMessageResourceNames => _baseMessageResourceNames;

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ public class BaseProvideRequiredToolProperties
{
public override string Id => string.Empty;

private readonly List<string> _messageResourceNames = new List<string>
private readonly List<string> _baseMessageResourceNames = new List<string>
{
nameof(RuleResources.Base1018_ProvideRequiredToolProperties_Error_MissingDriverName_Text),
nameof(RuleResources.Base1018_ProvideRequiredToolProperties_Error_MissingDriverRules_Text),
nameof(RuleResources.Base1018_ProvideRequiredToolProperties_Error_MissingDriver_Text),
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames;
protected ICollection<string> BaseMessageResourceNames => _baseMessageResourceNames;

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ public class Base2012ProvideRequiredReportingDescriptorProperties
{
public override string Id => string.Empty;

private readonly List<string> _messageResourceNames = new List<string>
private readonly List<string> _baseMessageResourceNames = new List<string>
{
nameof(RuleResources.Base2012_ProvideRequiredReportingDescriptorProperties_Error_MissingIdProperty_Text)
};

protected override ICollection<string> MessageResourceNames => _messageResourceNames;
private ICollection<string> BaseMessageResourceNames => _baseMessageResourceNames;

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
Expand All @@ -15,6 +16,10 @@ public class GhasReferenceFinalSchema

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.GH1011_ReferenceFinalSchema };

private readonly List<string> _messageResourceNames = new List<string>();

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ghas });

protected override string ServiceName => RuleResources.ServiceName_GHAS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;
using System.Linq;

namespace Microsoft.CodeAnalysis.Sarif.Multitool.Rules
{
Expand All @@ -15,6 +16,10 @@ public class GhProvideRequiredSarifLogProperties

public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.GH1013_ProvideRequiredSarifLogProperties_FullDescription_Text };

private readonly List<string> _messageResourceNames = new List<string>();

protected override ICollection<string> MessageResourceNames => _messageResourceNames.Concat(BaseMessageResourceNames).ToList();

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ghas });

protected override string ServiceName => RuleResources.ServiceName_GHAS;
Expand Down
Loading
Loading