Skip to content

Commit 4689bdb

Browse files
committed
C#: Log unused downloaded packages.
1 parent 1054e7a commit 4689bdb

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ private static string GetPackageName(string package) =>
4040
/// <summary>
4141
/// Packages that are used as a part of the required dependencies.
4242
/// </summary>
43-
public IEnumerable<string> UsedPackages => usedPackages;
43+
public HashSet<string> UsedPackages => usedPackages;
4444

4545
/// <summary>
4646
/// Add a dependency inside a package.

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

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,9 @@ public DependencyManager(string srcDir, IDependencyOptions options, ILogger logg
107107
.Required
108108
.Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d))
109109
.ToList();
110-
111-
// TODO: Log all packages that are not used as a dependency.
112-
113110
dllPaths.AddRange(paths);
111+
112+
LogAllUnusedPackages(dependencies);
114113
DownloadMissingPackages(allNonBinaryFiles, dllPaths);
115114
}
116115

@@ -292,6 +291,23 @@ private void AddMicrosoftWindowsDesktopDlls(List<string> dllPaths)
292291
.FullName;
293292
}
294293

294+
private IEnumerable<string> GetAllPackageDirectories()
295+
{
296+
if (!options.UseNuGet)
297+
{
298+
return Enumerable.Empty<string>();
299+
}
300+
301+
return new DirectoryInfo(packageDirectory.DirInfo.FullName)
302+
.EnumerateDirectories("*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false })
303+
.Select(d => d.FullName);
304+
}
305+
306+
private void LogAllUnusedPackages(Dependencies dependencies) =>
307+
GetAllPackageDirectories()
308+
.Where(package => !dependencies.UsedPackages.Contains(package))
309+
.ForEach(package => progressMonitor.LogInfo($"Unused package: {package}"));
310+
295311
private void GenerateSourceFileFromImplicitUsings()
296312
{
297313
var usings = new HashSet<string>();

0 commit comments

Comments
 (0)