Skip to content

Commit d969dd6

Browse files
committed
Remove some unnecessary null handling, use arrays
1 parent 13e4d86 commit d969dd6

File tree

3 files changed

+27
-27
lines changed

3 files changed

+27
-27
lines changed

BinaryObjectScanner.Test/Data/StaticChecksTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class StaticChecksTests
99
public void ContentCheckClasses_Populated()
1010
{
1111
var actual = StaticChecks.ContentCheckClasses;
12-
Assert.Equal(6, actual.Count);
12+
Assert.Equal(6, actual.Length);
1313
}
1414

1515
[Fact]
@@ -30,21 +30,21 @@ public void MSDOSExecutableCheckClasses_Empty()
3030
public void NewExecutableCheckClasses_Populated()
3131
{
3232
var actual = StaticChecks.NewExecutableCheckClasses;
33-
Assert.Equal(7, actual.Count);
33+
Assert.Equal(7, actual.Length);
3434
}
3535

3636
[Fact]
3737
public void PathCheckClasses_Populated()
3838
{
3939
var actual = StaticChecks.PathCheckClasses;
40-
Assert.Equal(68, actual.Count);
40+
Assert.Equal(68, actual.Length);
4141
}
4242

4343
[Fact]
4444
public void PortableExecutableCheckClasses_Populated()
4545
{
4646
var actual = StaticChecks.PortableExecutableCheckClasses;
47-
Assert.Equal(105, actual.Count);
47+
Assert.Equal(105, actual.Length);
4848
}
4949
}
5050
}

BinaryObjectScanner/Data/StaticChecks.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,72 +13,72 @@ internal static class StaticChecks
1313
/// <summary>
1414
/// Cache for all IContentCheck types
1515
/// </summary>
16-
public static List<IContentCheck> ContentCheckClasses
16+
public static IContentCheck[] ContentCheckClasses
1717
{
1818
get
1919
{
2020
contentCheckClasses ??= InitCheckClasses<IContentCheck>();
21-
return contentCheckClasses ?? [];
21+
return contentCheckClasses;
2222
}
2323
}
2424

2525
/// <summary>
2626
/// Cache for all IExecutableCheck<LinearExecutable> types
2727
/// </summary>
28-
public static List<IExecutableCheck<LinearExecutable>> LinearExecutableCheckClasses
28+
public static IExecutableCheck<LinearExecutable>[] LinearExecutableCheckClasses
2929
{
3030
get
3131
{
3232
linearExecutableCheckClasses ??= InitCheckClasses<IExecutableCheck<LinearExecutable>>();
33-
return linearExecutableCheckClasses ?? [];
33+
return linearExecutableCheckClasses;
3434
}
3535
}
3636

3737
/// <summary>
3838
/// Cache for all IExecutableCheck<MSDOS> types
3939
/// </summary>
40-
public static List<IExecutableCheck<MSDOS>> MSDOSExecutableCheckClasses
40+
public static IExecutableCheck<MSDOS>[] MSDOSExecutableCheckClasses
4141
{
4242
get
4343
{
4444
msdosExecutableCheckClasses ??= InitCheckClasses<IExecutableCheck<MSDOS>>();
45-
return msdosExecutableCheckClasses ?? [];
45+
return msdosExecutableCheckClasses;
4646
}
4747
}
4848

4949
/// <summary>
5050
/// Cache for all IExecutableCheck<NewExecutable> types
5151
/// </summary>
52-
public static List<IExecutableCheck<NewExecutable>> NewExecutableCheckClasses
52+
public static IExecutableCheck<NewExecutable>[] NewExecutableCheckClasses
5353
{
5454
get
5555
{
5656
newExecutableCheckClasses ??= InitCheckClasses<IExecutableCheck<NewExecutable>>();
57-
return newExecutableCheckClasses ?? [];
57+
return newExecutableCheckClasses;
5858
}
5959
}
6060

6161
/// <summary>
6262
/// Cache for all IPathCheck types
6363
/// </summary>
64-
public static List<IPathCheck> PathCheckClasses
64+
public static IPathCheck[] PathCheckClasses
6565
{
6666
get
6767
{
6868
pathCheckClasses ??= InitCheckClasses<IPathCheck>();
69-
return pathCheckClasses ?? [];
69+
return pathCheckClasses;
7070
}
7171
}
7272

7373
/// <summary>
7474
/// Cache for all IExecutableCheck<PortableExecutable> types
7575
/// </summary>
76-
public static List<IExecutableCheck<PortableExecutable>> PortableExecutableCheckClasses
76+
public static IExecutableCheck<PortableExecutable>[] PortableExecutableCheckClasses
7777
{
7878
get
7979
{
8080
portableExecutableCheckClasses ??= InitCheckClasses<IExecutableCheck<PortableExecutable>>();
81-
return portableExecutableCheckClasses ?? [];
81+
return portableExecutableCheckClasses;
8282
}
8383
}
8484

@@ -89,32 +89,32 @@ public static List<IExecutableCheck<PortableExecutable>> PortableExecutableCheck
8989
/// <summary>
9090
/// Cache for all IContentCheck types
9191
/// </summary>
92-
private static List<IContentCheck>? contentCheckClasses;
92+
private static IContentCheck[]? contentCheckClasses;
9393

9494
/// <summary>
9595
/// Cache for all IExecutableCheck<LinearExecutable> types
9696
/// </summary>
97-
private static List<IExecutableCheck<LinearExecutable>>? linearExecutableCheckClasses;
97+
private static IExecutableCheck<LinearExecutable>[]? linearExecutableCheckClasses;
9898

9999
/// <summary>
100100
/// Cache for all IExecutableCheck<MSDOS> types
101101
/// </summary>
102-
private static List<IExecutableCheck<MSDOS>>? msdosExecutableCheckClasses;
102+
private static IExecutableCheck<MSDOS>[]? msdosExecutableCheckClasses;
103103

104104
/// <summary>
105105
/// Cache for all IExecutableCheck<NewExecutable> types
106106
/// </summary>
107-
private static List<IExecutableCheck<NewExecutable>>? newExecutableCheckClasses;
107+
private static IExecutableCheck<NewExecutable>[]? newExecutableCheckClasses;
108108

109109
/// <summary>
110110
/// Cache for all IPathCheck types
111111
/// </summary>
112-
private static List<IPathCheck>? pathCheckClasses;
112+
private static IPathCheck[]? pathCheckClasses;
113113

114114
/// <summary>
115115
/// Cache for all IExecutableCheck<PortableExecutable> types
116116
/// </summary>
117-
private static List<IExecutableCheck<PortableExecutable>>? portableExecutableCheckClasses;
117+
private static IExecutableCheck<PortableExecutable>[]? portableExecutableCheckClasses;
118118

119119
#endregion
120120

@@ -123,13 +123,13 @@ public static List<IExecutableCheck<PortableExecutable>> PortableExecutableCheck
123123
/// <summary>
124124
/// Initialize all implementations of a type
125125
/// </summary>
126-
private static List<T>? InitCheckClasses<T>()
127-
=> InitCheckClasses<T>(Assembly.GetExecutingAssembly()) ?? [];
126+
private static T[] InitCheckClasses<T>()
127+
=> InitCheckClasses<T>(Assembly.GetExecutingAssembly());
128128

129129
/// <summary>
130130
/// Initialize all implementations of a type
131131
/// </summary>
132-
private static List<T> InitCheckClasses<T>(Assembly assembly)
132+
private static T[] InitCheckClasses<T>(Assembly assembly)
133133
{
134134
// Get information from the type param
135135
string? interfaceName = typeof(T).FullName;
@@ -174,7 +174,7 @@ private static List<T> InitCheckClasses<T>(Assembly assembly)
174174
classTypes.Add(instance);
175175
}
176176

177-
return classTypes;
177+
return [.. classTypes];
178178
}
179179

180180
#endregion

BinaryObjectScanner/FileType/Executable.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ protected IDictionary<IContentCheck, string> RunContentChecks(string? file, Stre
7979
/// <param name="scanner">Scanner for handling recursive protections</param>
8080
/// <param name="includeDebug">True to include debug data, false otherwise</param>
8181
/// <returns>Set of protections in file, empty on error</returns>
82-
protected IDictionary<U, string> RunExecutableChecks<U>(string file, T exe, List<U> checks, bool includeDebug)
82+
protected IDictionary<U, string> RunExecutableChecks<U>(string file, T exe, U[] checks, bool includeDebug)
8383
where U : IExecutableCheck<T>
8484
{
8585
// Create the output dictionary

0 commit comments

Comments
 (0)