Skip to content

Commit 3814c0a

Browse files
committed
C#: Add NuGet package missing failures to the compilation info.
1 parent b5ce4a8 commit 3814c0a

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ public partial record class RestoreResult(bool Success, IList<string> Output)
3333
private readonly Lazy<bool> hasNugetNoStablePackageVersionError = new(() => Output.Any(s => s.Contains("NU1103")));
3434
public bool HasNugetNoStablePackageVersionError => hasNugetNoStablePackageVersionError.Value;
3535

36+
private readonly Lazy<bool> hasNugetPackageMissingError = new(() => Output.Any(s => s.Contains("NU1101")));
37+
public bool HasNugetPackageMissingError => hasNugetPackageMissingError.Value;
38+
3639
private static IEnumerable<string> GetFirstGroupOnMatch(Regex regex, IEnumerable<string> lines) =>
3740
lines
3841
.Select(line => regex.Match(line))

csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,8 @@ private IEnumerable<string> RestoreSolutions(string? nugetSources, out Dependenc
317317
{
318318
var successCount = 0;
319319
var nugetSourceFailures = 0;
320+
var nugetMissingPackageFailures = 0;
321+
320322
var assets = new Assets(logger);
321323

322324
var isWindows = fileContent.UseWindowsForms || fileContent.UseWpf;
@@ -333,12 +335,17 @@ private IEnumerable<string> RestoreSolutions(string? nugetSources, out Dependenc
333335
{
334336
nugetSourceFailures++;
335337
}
338+
if (res.HasNugetPackageMissingError)
339+
{
340+
nugetMissingPackageFailures++;
341+
}
336342
assets.AddDependenciesRange(res.AssetsFilePaths);
337343
return res.RestoredProjects;
338344
}).ToList();
339345
dependencies = assets.Dependencies;
340346
compilationInfoContainer.CompilationInfos.Add(("Successfully restored solution files", successCount.ToString()));
341347
compilationInfoContainer.CompilationInfos.Add(("Failed solution restore with package source error", nugetSourceFailures.ToString()));
348+
compilationInfoContainer.CompilationInfos.Add(("Failed solution restore with missing package error", nugetMissingPackageFailures.ToString()));
342349
compilationInfoContainer.CompilationInfos.Add(("Restored projects through solution files", projects.Count.ToString()));
343350
return projects;
344351
}
@@ -373,6 +380,7 @@ private void RestoreProjects(IEnumerable<string> projects, string? explicitResto
373380
{
374381
var successCount = 0;
375382
var nugetSourceFailures = 0;
383+
var nugetMissingPackageFailures = 0;
376384
ConcurrentBag<DependencyContainer> collectedDependencies = [];
377385

378386
var isWindows = fileContent.UseWindowsForms || fileContent.UseWpf;
@@ -397,13 +405,18 @@ private void RestoreProjects(IEnumerable<string> projects, string? explicitResto
397405
{
398406
nugetSourceFailures++;
399407
}
408+
if (res.HasNugetPackageMissingError)
409+
{
410+
nugetMissingPackageFailures++;
411+
}
400412
}
401413
}
402414
collectedDependencies.Add(assets.Dependencies);
403415
});
404416
dependencies = collectedDependencies;
405417
compilationInfoContainer.CompilationInfos.Add(("Successfully restored project files", successCount.ToString()));
406418
compilationInfoContainer.CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString()));
419+
compilationInfoContainer.CompilationInfos.Add(("Failed project restore with missing package error", nugetMissingPackageFailures.ToString()));
407420
}
408421

409422
private AssemblyLookupLocation? DownloadMissingPackagesFromSpecificFeeds(IEnumerable<string> usedPackageNames, HashSet<string>? feedsFromNugetConfigs)

0 commit comments

Comments
 (0)