in src/Sarif.Viewer.VisualStudio.Core/Sarif/Location.Extensions.cs [52:92]
public static string ExtractSnippet(this Location location, Run run, FileRegionsCache fileRegionsCache)
{
PhysicalLocation physicalLocation = location.PhysicalLocation;
ArtifactLocation artifactLocation = location.PhysicalLocation?.ArtifactLocation;
Region region = location.PhysicalLocation?.Region;
Uri uri = location.PhysicalLocation?.ArtifactLocation?.Uri;
if (uri == null || region == null || region.IsBinaryRegion || physicalLocation == null)
{
return string.Empty;
}
if (region.Snippet != null)
{
return region.Snippet.Text;
}
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
// we must pick the ArtifactLocation details from run.artifacts array
Artifact artifactFromRun = run.Artifacts[artifactLocation.Index];
artifactLocation = artifactFromRun.Location;
}
// If we can resolve a file location to a newly constructed
// absolute URI, we will prefer that
if (!artifactLocation.TryReconstructAbsoluteUri(run.OriginalUriBaseIds, out Uri resolvedUri))
{
resolvedUri = artifactLocation.Uri;
}
if (!resolvedUri.IsAbsoluteUri)
{
return string.Empty;
}
fileRegionsCache ??= new FileRegionsCache();
Region expandedRegion = fileRegionsCache.PopulateTextRegionProperties(region, resolvedUri, populateSnippet: true);
return expandedRegion.Snippet != null ? expandedRegion.Snippet.Text : string.Empty;
}