From 5a1de5bc2763b74e29cb044dccd09ff7e0e00640 Mon Sep 17 00:00:00 2001 From: "Michael C. Fanning" Date: Mon, 12 Sep 2022 15:59:14 -0700 Subject: [PATCH 1/2] Allow per-instance file regions cache to be set on InsertOptionalDataVisitor. --- src/ReleaseHistory.md | 3 +++ src/Sarif/Visitors/InsertOptionalDataVisitor.cs | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ReleaseHistory.md b/src/ReleaseHistory.md index 6d2a8cfc3..4ecc0582e 100644 --- a/src/ReleaseHistory.md +++ b/src/ReleaseHistory.md @@ -1,5 +1,8 @@ # SARIF Package Release History (SDK, Driver, Converters, and Multitool) +## UNRELEASED +* FEATURE: Allow initialization of file regions cache in `InsertOptionalDataVisitor` (previously initialized exclusively from `FileRegionsCache.Instance`). + ## **v3.1.0** [Sdk](https://www.nuget.org/packages/Sarif.Sdk/3.1.0) | [Driver](https://www.nuget.org/packages/Sarif.Driver/3.1.0) | [Converters](https://www.nuget.org/packages/Sarif.Converters/3.1.0) | [Multitool](https://www.nuget.org/packages/Sarif.Multitool/3.1.0) | [Multitool Library](https://www.nuget.org/packages/Sarif.Multitool.Library/3.1.0) * BUGFIX: Loosen `System.Collections.Immutable` minimum version requirement to 1.5.0. [#2504](https://github.com/microsoft/sarif-sdk/pull/2533) diff --git a/src/Sarif/Visitors/InsertOptionalDataVisitor.cs b/src/Sarif/Visitors/InsertOptionalDataVisitor.cs index d455149eb..394a5d7c2 100644 --- a/src/Sarif/Visitors/InsertOptionalDataVisitor.cs +++ b/src/Sarif/Visitors/InsertOptionalDataVisitor.cs @@ -43,7 +43,8 @@ public InsertOptionalDataVisitor( IDictionary originalUriBaseIds = null, IFileSystem fileSystem = null, GitHelper.ProcessRunner processRunner = null, - IEnumerable insertProperties = null) + IEnumerable insertProperties = null, + FileRegionsCache fileRegionsCache = null) { _fileSystem = fileSystem ?? FileSystem.Instance; _processRunner = processRunner; @@ -53,6 +54,8 @@ public InsertOptionalDataVisitor( _dataToInsert = dataToInsert; _originalUriBaseIds = originalUriBaseIds; _insertProperties = insertProperties ?? new List(); + + _fileRegionsCache = fileRegionsCache ?? FileRegionsCache.Instance; } public override Run VisitRun(Run node) @@ -111,8 +114,6 @@ public override PhysicalLocation VisitPhysicalLocation(PhysicalLocation node) Region expandedRegion; ArtifactLocation artifactLocation = node.ArtifactLocation; - _fileRegionsCache ??= FileRegionsCache.Instance; - if (artifactLocation.Uri == null && artifactLocation.Index >= 0) { // Uri is not stored at result level, but we have an index to go look in run.Artifacts From e70bc0a63cfe503b061b6d92af985fc10db97018 Mon Sep 17 00:00:00 2001 From: "Michael C. Fanning" Date: Mon, 12 Sep 2022 16:49:05 -0700 Subject: [PATCH 2/2] Provide context region construction helper in 'FileRegionsCache'. --- src/Sarif/FileRegionsCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Sarif/FileRegionsCache.cs b/src/Sarif/FileRegionsCache.cs index 57e2f1421..e6aac08bf 100644 --- a/src/Sarif/FileRegionsCache.cs +++ b/src/Sarif/FileRegionsCache.cs @@ -142,7 +142,7 @@ private Region PopulateTextRegionProperties(NewLineIndex lineIndex, Region input return region; } - internal Region ConstructMultilineContextSnippet(Region inputRegion, Uri uri) + public Region ConstructMultilineContextSnippet(Region inputRegion, Uri uri) { if (inputRegion?.IsBinaryRegion != false) {