Skip to content

Commit

Permalink
Add functional test data for new validation rules + code polish (#2784)
Browse files Browse the repository at this point in the history
* New strings + lots of tweaks & cleanup

* Add missing resource string

* Syntax fix for old compiler

* Another

* Updates, some attempts to fix existing tests

* Change RuleKind to sequential ints

* Logging + test data fixes

* PR feedback

* Fix

* Update baselines

---------

Co-authored-by: scottoneil-ms <[email protected]>
  • Loading branch information
EasyRhinoMSFT and scottoneil-ms authored Feb 17, 2024
1 parent f962085 commit 830140f
Show file tree
Hide file tree
Showing 41 changed files with 598 additions and 619 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public class AdoReferenceFinalSchema
/// </summary>
public override string Id => RuleId.ADOReferenceFinalSchema;

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

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 @@ -13,6 +13,8 @@ public class AdoProvideRequiredSarifLogProperties
/// </summary>
public override string Id => RuleId.ADOProvideRequiredSarifLogProperties;

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

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 @@ -15,11 +15,11 @@ public class AdoProvideRequiredRunProperties

protected override IEnumerable<string> MessageResourceNames => new string[] {
nameof(RuleResources.ADO1014_AdoProvideRequiredRunProperties_Error_MissingAutomationDetails_Text),
nameof(RuleResources.ADO1014_AdoProvideRequiredRunProperties_Error_MissingAutomationDetailsId_Text),
nameof(RuleResources.Base1014_ProvideRequiredRunProperties_Error_MissingResultsArray_Text),
nameof(RuleResources.Base1014_ProvideRequiredRunProperties_Error_MissingTool_Text)
nameof(RuleResources.ADO1014_AdoProvideRequiredRunProperties_Error_MissingAutomationDetailsId_Text)
};

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

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 @@ -13,16 +13,13 @@ public class AdoProvideRequiredResultProperties
/// </summary>
public override string Id => RuleId.ADOProvideRequiredResultProperties;

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

protected override IEnumerable<string> MessageResourceNames => new string[] {
nameof(RuleResources.ADO1015_ProvideRequiredResultProperties_Error_MissingRuleId_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_EmptyLocationsArray_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingLocationsArray_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingMessageText_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingMessage_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingPartialFingerprints_Text)
nameof(RuleResources.ADO1015_ProvideRequiredResultProperties_Error_MissingRuleId_Text)
};

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

protected override string ServiceName => RuleResources.ServiceName_ADO;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ public class AdoProvideRequiredLocationProperties
{
public override string Id => RuleId.ADOProvideRequiredLocationProperties;

public override HashSet<RuleKind> RuleKinds => new HashSet<RuleKind>(new[] { RuleKind.Ado });
public override MultiformatMessageString FullDescription => new MultiformatMessageString() { Text = RuleResources.ADO1016_ProvideRequiredLocationProperties_FullDescription_Text };

public override MultiformatMessageString FullDescription => new MultiformatMessageString();
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 @@ -13,6 +13,8 @@ public class AdoProvideRequiredPhysicalLocationProperties
/// </summary>
public override string Id => RuleId.ADOProvideRequiredPhysicalLocationProperties;

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

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 @@ -16,12 +16,11 @@ public class AdoProvideRequiredToolProperties
public override string Id => RuleId.ADOProvideToolDriverProperties;

protected override IEnumerable<string> MessageResourceNames => new string[] {
nameof(RuleResources.ADO1018_ProvideRequiredToolProperties_Error_MissingDriverFullName_Text),
nameof(RuleResources.Base1018_ProvideRequiredToolProperties_Error_MissingDriverName_Text),
nameof(RuleResources.Base1018_ProvideRequiredToolProperties_Error_MissingDriverRules_Text),
nameof(RuleResources.Base1018_ProvideRequiredToolProperties_Error_MissingDriver_Text),
nameof(RuleResources.ADO1018_ProvideRequiredToolProperties_Error_MissingDriverFullName_Text)
};

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

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

protected override string ServiceName => RuleResources.ServiceName_ADO;
Expand All @@ -35,17 +34,14 @@ protected override void Analyze(Run run, string runPointer)
{
base.Analyze(run.Tool, runPointer.AtProperty(SarifPropertyName.Tool));

if (run.Tool?.Driver != null)
if (run.Tool?.Driver != null && string.IsNullOrWhiteSpace(run.Tool.Driver.FullName))
{
if (string.IsNullOrWhiteSpace(run.Tool.Driver.FullName))
{
// {0}: This 'driver' object does not provide a 'fullName' value. This property is required by the {1} service.
LogResult(
runPointer
.AtProperty(SarifPropertyName.Tool)
.AtProperty(SarifPropertyName.Driver),
nameof(RuleResources.ADO1018_ProvideRequiredToolProperties_Error_MissingDriverFullName_Text));
}
// {0}: This 'driver' object does not provide a 'fullName' value. This property is required by the {1} service.
LogResult(
runPointer
.AtProperty(SarifPropertyName.Tool)
.AtProperty(SarifPropertyName.Driver),
nameof(RuleResources.ADO1018_ProvideRequiredToolProperties_Error_MissingDriverFullName_Text));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,11 @@ public class AdoProvideRequiredReportingDescriptorProperties
public override string Id => RuleId.ADOProvideRequiredReportingDescriptorProperties;

protected override IEnumerable<string> MessageResourceNames => new string[] {
nameof(RuleResources.ADO2012_ProvideRequiredResultProperties_Error_MissingName_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_EmptyLocationsArray_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingLocationsArray_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingMessageText_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingMessage_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingPartialFingerprints_Text)
nameof(RuleResources.ADO2012_ProvideRequiredResultProperties_Error_MissingName_Text)
};

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

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 @@ -22,10 +22,10 @@ public class BaseReferenceFinalSchema : SarifValidationSkimmerBase
/// the schema were produced. Now that the standard is final, only the OASIS standard version
/// of the schema is valid.
/// </summary>
public override MultiformatMessageString FullDescription => new MultiformatMessageString { Text = RuleResources.SARIF1011_ReferenceFinalSchema_FullDescription_Text };
public override MultiformatMessageString FullDescription => new MultiformatMessageString();

protected override IEnumerable<string> MessageResourceNames => new string[] {
nameof(RuleResources.SARIF1011_ReferenceFinalSchema_Error_Default_Text)
nameof(RuleResources.Base1011_ReferenceFinalSchema_Error_Default_Text)
};

protected override void Analyze(SarifLog log, string logPointer)
Expand Down Expand Up @@ -54,8 +54,7 @@ private void AnalyzeSchema(Uri schemaUri, string schema)
// that refers to the final version of the schema.
LogResult(
schema,
nameof(RuleResources.SARIF1011_ReferenceFinalSchema_Error_Default_Text),
schemaUri.OriginalString);
nameof(RuleResources.Base1011_ReferenceFinalSchema_Error_Default_Text));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class BaseProvideRequiredSarifLogProperties

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

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

protected override IEnumerable<string> MessageResourceNames => new string[] {
nameof(RuleResources.Base1013_MaximumRunsCount_Note_Default_Text),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ public class BaseProvideRequiredLocationProperties
public override string Id => string.Empty;

protected override IEnumerable<string> MessageResourceNames => new string[] {
nameof(RuleResources.Base1016_LocationPhysicalLocation_Error_Default_Text),
nameof(RuleResources.Base1016_ProvideRequiredLocationProperties_Error_MissingPhysicalLocationRegion_Text),
nameof(RuleResources.Base1016_ProvideRequiredLocationProperties_Error_MissingPhysicalLocation_Text)
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ protected override void Analyze(ReportingDescriptor reportingDescriptor, string
{
if (reportingDescriptor != null && string.IsNullOrWhiteSpace(reportingDescriptor.Id))
{
// {0}: This 'reportingDescriptor' object does not provide an 'id' value. This property is required by the {1} service.
// {0}: This 'reportingDescriptor' object does not provide an 'Id' value. This property is required by the {1} service.
LogResult(
reportingDescriptorPointer,
nameof(RuleResources.Base2012_ProvideRequiredReportingDescriptorProperties_Error_MissingIdProperty_Text));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public ProvideRequiredLocationProperties()
/// </summary>
public override string Id => RuleId.ProvideRequiredLocationProperties;

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

/// <summary>
/// Each result location must provide the property 'physicalLocation.artifactLocation.uri'.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public InlineThreadFlowLocations()
/// </summary>
public override string Id => RuleId.InlineThreadFlowLocations;

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

/// <summary>
/// Results that include codeFlows must specify each threadFlowLocation directly within
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public ProvideRequiredRegionProperties()
/// </summary>
public override string Id => RuleId.ProvideRequiredRegionProperties;

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

// Every result must provide a 'region' that specifies its location with line and optional
// column information. GitHub Advanced Security code scanning can display the correct
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public ReviewArraysThatExceedConfigurableDefaults()
/// </summary>
public override string Id => RuleId.ReviewArraysThatExceedConfigurableDefaults;

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

// GitHub Advanced Security code scanning limits the amount of information it displays. There
// are limits on the number of runs per log file, rules per run, results per run, locations
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public LocationsMustBeRelativeUrisOrFilePaths()
/// </summary>
public override string Id => RuleId.LocationsMustBeRelativeUrisOrFilePaths;

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

// GitHub Advanced Security code scanning only displays results whose locations are specified
// by file paths, either as relative URIs or as absolute URIs that use the 'file' scheme.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public ProvideCheckoutPath()
/// </summary>
public override string Id => RuleId.ProvideCheckoutPath;

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

// GitHub Advanced Security code scanning will reject a SARIF file that expresses
// result locations as absolute 'file' scheme URIs unless GitHub can determine the URI
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class ProvideFullyFormattedMessageStrings : SarifValidationSkimmerBase
/// </summary>
public override string Id => RuleId.ProvideFullyFormattedMessageStrings;

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

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public class GhasReferenceFinalSchema
/// </summary>
public override string Id => RuleId.GHASReferenceFinalSchema;

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

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 @@ -13,6 +13,8 @@ public class GhProvideRequiredSarifLogProperties
/// </summary>
public override string Id => RuleId.GHASProvideRequiredSarifLogProperties;

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

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 @@ -13,6 +13,8 @@ public class GhasProvideRequiredRunProperties
/// </summary>
public override string Id => RuleId.GHASProvideRequiredRunProperties;

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

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 @@ -13,6 +13,8 @@ public class GhasProvideRequiredResultProperties
/// </summary>
public override string Id => RuleId.GHASProvideRequiredResultProperties;

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

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 @@ -13,12 +13,12 @@ public class GHASProvideRequiredLocationProperties
/// </summary>
public override string Id => RuleId.GHASProvideRequiredLocationProperties;

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

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

protected override string ServiceName => RuleResources.ServiceName_GHAS;

public override MultiformatMessageString FullDescription => new MultiformatMessageString();

public GHASProvideRequiredLocationProperties()
{
this.DefaultConfiguration.Level = FailureLevel.Error;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,11 @@ public class GhasProvideRequiredPhysicalLocationProperties
public override string Id => RuleId.GHASProvideRequiredPhysicalLocationProperties;

protected override IEnumerable<string> MessageResourceNames => new string[] {
nameof(RuleResources.GH1017_ProvideRequiredPhysicalLocationProperties_Error_MissingArtifactLocationUri_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_EmptyLocationsArray_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingLocationsArray_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingMessageText_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingMessage_Text),
nameof(RuleResources.Base1015_ProvideRequiredResultProperties_Error_MissingPartialFingerprints_Text)
nameof(RuleResources.GH1017_ProvideRequiredPhysicalLocationProperties_Error_MissingArtifactLocationUri_Text)
};

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

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

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

0 comments on commit 830140f

Please sign in to comment.