diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs
index 1d01412ee05..33e8db19eab 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs
@@ -192,6 +192,34 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return assemblyLookupLocations;
}
+ ///
+ /// Tests which of the feeds given by are reachable.
+ ///
+ /// The feeds to check.
+ /// Whether the feeds are fallback feeds or not.
+ /// The list of feeds that could be reached.
+ private List GetReachableNuGetFeeds(HashSet feedsToCheck, bool isFallback)
+ {
+ var fallbackStr = isFallback ? "fallback " : "";
+ logger.LogInfo($"Checking {fallbackStr}NuGet feed reachability on feeds: {string.Join(", ", feedsToCheck.OrderBy(f => f))}");
+
+ var (initialTimeout, tryCount) = GetFeedRequestSettings(isFallback);
+ var reachableFeeds = feedsToCheck
+ .Where(feed => IsFeedReachable(feed, initialTimeout, tryCount, allowExceptions: false))
+ .ToList();
+
+ if (reachableFeeds.Count == 0)
+ {
+ logger.LogWarning($"No {fallbackStr}NuGet feeds are reachable.");
+ }
+ else
+ {
+ logger.LogInfo($"Reachable {fallbackStr}NuGet feeds: {string.Join(", ", reachableFeeds.OrderBy(f => f))}");
+ }
+
+ return reachableFeeds;
+ }
+
private List GetReachableFallbackNugetFeeds(HashSet? feedsFromNugetConfigs)
{
var fallbackFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.FallbackNugetFeeds).ToHashSet();
@@ -212,21 +240,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
}
- logger.LogInfo($"Checking fallback NuGet feed reachability on feeds: {string.Join(", ", fallbackFeeds.OrderBy(f => f))}");
- var (initialTimeout, tryCount) = GetFeedRequestSettings(isFallback: true);
- var reachableFallbackFeeds = fallbackFeeds.Where(feed => IsFeedReachable(feed, initialTimeout, tryCount, allowExceptions: false)).ToList();
- if (reachableFallbackFeeds.Count == 0)
- {
- logger.LogWarning("No fallback NuGet feeds are reachable.");
- }
- else
- {
- logger.LogInfo($"Reachable fallback NuGet feeds: {string.Join(", ", reachableFallbackFeeds.OrderBy(f => f))}");
- }
-
- compilationInfoContainer.CompilationInfos.Add(("Reachable fallback NuGet feed count", reachableFallbackFeeds.Count.ToString()));
-
- return reachableFallbackFeeds;
+ return GetReachableNuGetFeeds(fallbackFeeds, isFallback: true);
}
///