Skip to content

Commit eee567f

Browse files
committed
don't report dependencies from .sln files
1 parent 910caa4 commit eee567f

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

src/Microsoft.ComponentDetection.Detectors/nuget/NuGetMSBuildBinaryLogComponentDetector.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
using System;
44
using System.Collections.Generic;
5+
using System.IO;
56
using System.Linq;
67
using System.Threading;
78
using Microsoft.Build.Locator;
@@ -183,6 +184,12 @@ private void ProcessBinLog(Build buildRoot, ISingleFileComponentRecorder compone
183184
var projectsPerPackage = new Dictionary<string, HashSet<string>>(StringComparer.OrdinalIgnoreCase);
184185
foreach (var projectPath in projectResolvedDependencies.Keys)
185186
{
187+
if (Path.GetExtension(projectPath).Equals(".sln", StringComparison.OrdinalIgnoreCase))
188+
{
189+
// don't report solution files
190+
continue;
191+
}
192+
186193
var projectDependencies = projectResolvedDependencies[projectPath];
187194
foreach (var (packageName, packageVersion) in projectDependencies)
188195
{
@@ -198,8 +205,9 @@ private void ProcessBinLog(Build buildRoot, ISingleFileComponentRecorder compone
198205
}
199206

200207
// report it all
201-
foreach (var (packageNameAndVersion, projectPaths) in projectsPerPackage)
208+
foreach (var packageNameAndVersion in projectsPerPackage.Keys.OrderBy(p => p))
202209
{
210+
var projectPaths = projectsPerPackage[packageNameAndVersion];
203211
var parts = packageNameAndVersion.Split('/', 2);
204212
var packageName = parts[0];
205213
var packageVersion = parts[1];

test/Microsoft.ComponentDetection.Detectors.Tests/NuGetMSBuildBinaryLogComponentDetectorTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,14 @@ public async Task PackagesReportedFromSeparateProjectsDoNotOverlap()
196196
.OrderBy(c => c.Name)
197197
.Select(c => $"{c.Name}/{c.Version}");
198198
project2Components.Should().Equal("Package.B/4.5.6");
199+
200+
var solutionComponents = detectedComponents
201+
.Where(d => d.FilePaths.Any(p => p.Replace("\\", "/").EndsWith("/solution.sln")))
202+
.Select(d => d.Component)
203+
.Cast<NuGetComponent>()
204+
.OrderBy(c => c.Name)
205+
.Select(c => $"{c.Name}/{c.Version}");
206+
solutionComponents.Should().BeEmpty();
199207
}
200208

201209
private async Task<(IndividualDetectorScanResult ScanResult, IComponentRecorder ComponentRecorder)> ExecuteDetectorAndGetBinLogAsync(

0 commit comments

Comments
 (0)