Skip to content

Commit e89fe8d

Browse files
committed
C#: Re-factor the hardcoded package names into a separate class.
1 parent 98dbbe9 commit e89fe8d

File tree

4 files changed

+34
-21
lines changed

4 files changed

+34
-21
lines changed

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,6 @@ internal class Assets
1414
{
1515
private readonly ProgressMonitor progressMonitor;
1616

17-
private static readonly string[] netFrameworks = new[] {
18-
"microsoft.aspnetcore.app.ref",
19-
"microsoft.netcore.app.ref",
20-
"microsoft.netframework.referenceassemblies",
21-
"microsoft.windowsdesktop.app.ref",
22-
"netstandard.library.ref"
23-
};
24-
2517
internal Assets(ProgressMonitor progressMonitor)
2618
{
2719
this.progressMonitor = progressMonitor;
@@ -109,7 +101,7 @@ private void AddPackageDependencies(JObject json, DependencyContainer dependenci
109101
}
110102

111103
// If this is a .NET framework reference then include everything.
112-
if (netFrameworks.Any(framework => name.StartsWith(framework)))
104+
if (FrameworkPackageNames.AllFrameworks.Any(framework => name.StartsWith(framework)))
113105
{
114106
dependencies.AddFramework(name);
115107
}

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

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -232,13 +232,7 @@ private void AddNetFrameworkDlls(ISet<string> dllPaths)
232232
{
233233
// Multiple dotnet framework packages could be present.
234234
// The order of the packages is important, we're adding the first one that is present in the nuget cache.
235-
var packagesInPrioOrder = new string[]
236-
{
237-
"microsoft.netcore.app.ref", // net7.0, ... net5.0, netcoreapp3.1, netcoreapp3.0
238-
"microsoft.netframework.referenceassemblies.", // net48, ..., net20
239-
"netstandard.library.ref", // netstandard2.1
240-
"netstandard.library" // netstandard2.0
241-
};
235+
var packagesInPrioOrder = FrameworkPackageNames.NetFrameworks;
242236

243237
var frameworkPath = packagesInPrioOrder
244238
.Select((s, index) => (Index: index, Path: GetPackageDirectory(s)))
@@ -308,7 +302,7 @@ private void AddAspNetCoreFrameworkDlls(ISet<string> dllPaths)
308302
}
309303

310304
// First try to find ASP.NET Core assemblies in the NuGet packages
311-
if (GetPackageDirectory("microsoft.aspnetcore.app.ref") is string aspNetCorePackage)
305+
if (GetPackageDirectory(FrameworkPackageNames.AspNetCoreFramework) is string aspNetCorePackage)
312306
{
313307
progressMonitor.LogInfo($"Found ASP.NET Core in NuGet packages. Not adding installation directory.");
314308
dllPaths.Add(aspNetCorePackage);
@@ -322,7 +316,7 @@ private void AddAspNetCoreFrameworkDlls(ISet<string> dllPaths)
322316

323317
private void AddMicrosoftWindowsDesktopDlls(ISet<string> dllPaths)
324318
{
325-
if (GetPackageDirectory("microsoft.windowsdesktop.app.ref") is string windowsDesktopApp)
319+
if (GetPackageDirectory(FrameworkPackageNames.WindowsDesktopFramework) is string windowsDesktopApp)
326320
{
327321
progressMonitor.LogInfo($"Found Windows Desktop App in NuGet packages.");
328322
dllPaths.Add(windowsDesktopApp);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
4+
namespace Semmle.Extraction.CSharp.DependencyFetching
5+
{
6+
internal static class FrameworkPackageNames
7+
{
8+
// The order of the packages is important.
9+
public static readonly string[] NetFrameworks = new string[]
10+
{
11+
"microsoft.netcore.app.ref", // net7.0, ... net5.0, netcoreapp3.1, netcoreapp3.0
12+
"microsoft.netframework.referenceassemblies.", // net48, ..., net20
13+
"netstandard.library.ref", // netstandard2.1
14+
"netstandard.library" // netstandard2.0
15+
};
16+
17+
public static string AspNetCoreFramework =>
18+
"microsoft.aspnetcore.app.ref";
19+
20+
public static string WindowsDesktopFramework =>
21+
"microsoft.windowsdesktop.app.ref";
22+
23+
public static readonly IEnumerable<string> AllFrameworks =
24+
NetFrameworks
25+
.Union(new string[] { AspNetCoreFramework, WindowsDesktopFramework });
26+
}
27+
}

csharp/extractor/Semmle.Extraction.Tests/Assets.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void TestAssets1()
2525
Assert.Equal(6, dependencies.Packages.Count());
2626

2727
var normalizedPaths = dependencies.Paths.Select(FixExpectedPathOnWindows);
28-
// Required references
28+
// Used references
2929
Assert.Contains("castle.core/4.4.1/lib/netstandard1.5/Castle.Core.dll", normalizedPaths);
3030
Assert.Contains("castle.core/4.4.1/lib/netstandard1.5/Castle.Core2.dll", normalizedPaths);
3131
Assert.Contains("json.net/1.0.33/lib/netstandard2.0/Json.Net.dll", normalizedPaths);
@@ -57,10 +57,10 @@ public void TestAssets2()
5757
Assert.Equal(2, dependencies.Paths.Count());
5858

5959
var normalizedPaths = dependencies.Paths.Select(FixExpectedPathOnWindows);
60-
// Required references
60+
// Used references
6161
Assert.Contains("microsoft.netframework.referenceassemblies/1.0.3", normalizedPaths);
6262
Assert.Contains("microsoft.netframework.referenceassemblies.net48/1.0.3", normalizedPaths);
63-
// Used packages
63+
// Used frameworks
6464
Assert.Contains("microsoft.netframework.referenceassemblies", dependencies.Packages);
6565
Assert.Contains("microsoft.netframework.referenceassemblies.net48", dependencies.Packages);
6666
}

0 commit comments

Comments
 (0)