C#: Log unused downloaded packages.

This commit is contained in:
Michael Nebel
2023-11-03 11:30:42 +01:00
parent 1054e7a4ee
commit 4689bdb468
2 changed files with 20 additions and 4 deletions

View File

@@ -40,7 +40,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// <summary>
/// Packages that are used as a part of the required dependencies.
/// </summary>
public IEnumerable<string> UsedPackages => usedPackages;
public HashSet<string> UsedPackages => usedPackages;
/// <summary>
/// Add a dependency inside a package.

View File

@@ -107,10 +107,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
.Required
.Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d))
.ToList();
// TODO: Log all packages that are not used as a dependency.
dllPaths.AddRange(paths);
LogAllUnusedPackages(dependencies);
DownloadMissingPackages(allNonBinaryFiles, dllPaths);
}
@@ -292,6 +291,23 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
.FullName;
}
private IEnumerable<string> GetAllPackageDirectories()
{
if (!options.UseNuGet)
{
return Enumerable.Empty<string>();
}
return new DirectoryInfo(packageDirectory.DirInfo.FullName)
.EnumerateDirectories("*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false })
.Select(d => d.FullName);
}
private void LogAllUnusedPackages(Dependencies dependencies) =>
GetAllPackageDirectories()
.Where(package => !dependencies.UsedPackages.Contains(package))
.ForEach(package => progressMonitor.LogInfo($"Unused package: {package}"));
private void GenerateSourceFileFromImplicitUsings()
{
var usings = new HashSet<string>();