Skip to content

Commit 0b521d6

Browse files
author
Muhammad Rehan Saeed
committed
Upgrade packages. Check for nulls.
1 parent bf78945 commit 0b521d6

25 files changed

+398
-59
lines changed

MinimumRecommendedRulesWithStyleCop.ruleset

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
<Rule Id="CA1061" Action="Warning" />
1111
<Rule Id="CA1063" Action="Warning" />
1212
<Rule Id="CA1065" Action="Warning" />
13-
<Rule Id="CA1301" Action="Warning" />
13+
<Rule Id="CA1301" Action="Warning" />
14+
<Rule Id="CA1303" Action="None" />
1415
<Rule Id="CA1400" Action="Warning" />
1516
<Rule Id="CA1401" Action="Warning" />
1617
<Rule Id="CA1403" Action="Warning" />

Source/Schema.NET.Tool/CustomOverrides/AddNumberTypeToMediaObjectHeightAndWidth.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,23 @@ namespace Schema.NET.Tool.CustomOverrides
77
// https://github.com/schemaorg/schemaorg/issues/1668
88
public class AddNumberTypeToMediaObjectHeightAndWidth : IClassOverride
99
{
10-
public bool CanOverride(Class @class) =>
11-
string.Equals(@class.Name, "MediaObject", StringComparison.OrdinalIgnoreCase);
10+
public bool CanOverride(Class @class)
11+
{
12+
if (@class == null)
13+
{
14+
throw new ArgumentNullException(nameof(@class));
15+
}
16+
17+
return string.Equals(@class.Name, "MediaObject", StringComparison.OrdinalIgnoreCase);
18+
}
1219

1320
public void Override(Class @class)
1421
{
22+
if (@class == null)
23+
{
24+
throw new ArgumentNullException(nameof(@class));
25+
}
26+
1527
@class
1628
.Properties
1729
.First(x => string.Equals(x.Name, "Height", StringComparison.OrdinalIgnoreCase))

Source/Schema.NET.Tool/CustomOverrides/AddQueryInputPropertyToSearchAction.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,23 @@ namespace Schema.NET.Tool.CustomOverrides
66

77
public class AddQueryInputPropertyToSearchAction : IClassOverride
88
{
9-
public bool CanOverride(Class @class) =>
10-
string.Equals(@class.Name, "SearchAction", StringComparison.Ordinal);
9+
public bool CanOverride(Class @class)
10+
{
11+
if (@class == null)
12+
{
13+
throw new ArgumentNullException(nameof(@class));
14+
}
15+
16+
return string.Equals(@class.Name, "SearchAction", StringComparison.Ordinal);
17+
}
1118

1219
public void Override(Class @class)
1320
{
21+
if (@class == null)
22+
{
23+
throw new ArgumentNullException(nameof(@class));
24+
}
25+
1426
var property = new Property()
1527
{
1628
Class = @class,

Source/Schema.NET.Tool/CustomOverrides/AddTextTypeToActionTarget.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,23 @@ namespace Schema.NET.Tool.CustomOverrides
77
// See https://schema.org/docs/actions.html#part-3
88
public class AddTextTypeToActionTarget : IClassOverride
99
{
10-
public bool CanOverride(Class @class) =>
11-
string.Equals(@class.Name, "Action", StringComparison.OrdinalIgnoreCase);
10+
public bool CanOverride(Class @class)
11+
{
12+
if (@class == null)
13+
{
14+
throw new ArgumentNullException(nameof(@class));
15+
}
16+
17+
return string.Equals(@class.Name, "Action", StringComparison.OrdinalIgnoreCase);
18+
}
1219

1320
public void Override(Class @class)
1421
{
22+
if (@class == null)
23+
{
24+
throw new ArgumentNullException(nameof(@class));
25+
}
26+
1527
var property = @class.Properties.First(x => string.Equals(x.Name, "target", StringComparison.OrdinalIgnoreCase));
1628
property.Types.Add(new PropertyType("URL", "Uri"));
1729
}

Source/Schema.NET.Tool/CustomOverrides/WarnEmptyEnumerations.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,23 @@ namespace Schema.NET.Tool.CustomOverrides
55

66
public class WarnEmptyEnumerations : IEnumerationOverride
77
{
8-
public bool CanOverride(Enumeration enumeration) => enumeration.Values.Count == 0;
8+
public bool CanOverride(Enumeration enumeration)
9+
{
10+
if (enumeration == null)
11+
{
12+
throw new ArgumentNullException(nameof(enumeration));
13+
}
14+
15+
return enumeration.Values.Count == 0;
16+
}
917

1018
public void Override(Enumeration enumeration)
1119
{
20+
if (enumeration == null)
21+
{
22+
throw new ArgumentNullException(nameof(enumeration));
23+
}
24+
1225
Console.ForegroundColor = ConsoleColor.Cyan;
1326
Console.WriteLine($"Enumeration {enumeration.Layer}.{enumeration.Name} has no values");
1427
Console.ResetColor();

Source/Schema.NET.Tool/EnumerableExtensions.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace Schema.NET.Tool
1+
namespace Schema.NET.Tool
22
{
33
using System;
44
using System.Collections.Generic;
@@ -7,15 +7,25 @@
77
public static class EnumerableExtensions
88
{
99
public static IEnumerable<T> Traverse<T>(T node, Func<T, T> parent)
10-
{
10+
{
11+
if (parent == null)
12+
{
13+
throw new ArgumentNullException(nameof(parent));
14+
}
15+
1116
for (var x = node; x != null; x = parent(x))
1217
{
1318
yield return x;
1419
}
1520
}
1621

1722
public static IEnumerable<T> Traverse<T>(T node, Func<T, IEnumerable<T>> children)
18-
{
23+
{
24+
if (children == null)
25+
{
26+
throw new ArgumentNullException(nameof(children));
27+
}
28+
1929
yield return node;
2030

2131
var childNodes = children(node);

Source/Schema.NET.Tool/Program.cs

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,16 @@ namespace Schema.NET.Tool
1212
using Schema.NET.Tool.Services;
1313
using Schema.NET.Tool.ViewModels;
1414

15-
public class Program
15+
public class Program : Disposable
1616
{
17+
#pragma warning disable CA2213 // Object is being disposed
18+
private readonly SchemaRepository schemaRepository;
19+
#pragma warning restore CA2213 // Object is being disposed
1720
private readonly SchemaService schemaService;
1821

19-
public Program() =>
22+
public Program()
23+
{
24+
this.schemaRepository = new SchemaRepository();
2025
this.schemaService = new SchemaService(
2126
new List<IClassOverride>()
2227
{
@@ -28,9 +33,29 @@ public Program() =>
2833
{
2934
new WarnEmptyEnumerations()
3035
},
31-
new SchemaRepository());
36+
this.schemaRepository);
37+
}
38+
39+
public static async Task<int> Main()
40+
{
41+
var program = new Program();
3242

33-
public static void Main() => new Program().Execute().Wait();
43+
try
44+
{
45+
await program.Execute().ConfigureAwait(false);
46+
return 0;
47+
}
48+
#pragma warning disable CA1031 // Do not catch general exception types
49+
catch
50+
#pragma warning restore CA1031 // Do not catch general exception types
51+
{
52+
return -1;
53+
}
54+
finally
55+
{
56+
program.Dispose();
57+
}
58+
}
3459

3560
public async Task Execute()
3661
{
@@ -69,6 +94,8 @@ public async Task Execute()
6994
Console.WriteLine("Finished Write Classes");
7095
}
7196

97+
protected override void DisposeManaged() => this.schemaRepository.Dispose();
98+
7299
private static async Task ClearOutputDirectory(string directoryPath)
73100
{
74101
foreach (var filePath in Directory.GetFiles(directoryPath, "*.cs", SearchOption.AllDirectories))

Source/Schema.NET.Tool/Repositories/SchemaPropertyJsonConverter.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,21 @@ public class SchemaPropertyJsonConverter : JsonConverter
1414

1515
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
1616
{
17+
if (reader == null)
18+
{
19+
throw new ArgumentNullException(nameof(reader));
20+
}
21+
22+
if (objectType == null)
23+
{
24+
throw new ArgumentNullException(nameof(objectType));
25+
}
26+
27+
if (serializer == null)
28+
{
29+
throw new ArgumentNullException(nameof(serializer));
30+
}
31+
1732
if (reader.TokenType == JsonToken.StartObject)
1833
{
1934
var token = JToken.Load(reader);

Source/Schema.NET.Tool/Repositories/SchemaRepository.cs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,25 +55,29 @@ public SchemaRepository() =>
5555

5656
public async Task<List<SchemaObject>> GetSchemaObjects()
5757
{
58-
var response = await this.httpClient
58+
using (var response = await this.httpClient
5959
.GetAsync(new Uri("/version/latest/all-layers.jsonld", UriKind.Relative))
60-
.ConfigureAwait(false);
61-
response.EnsureSuccessStatusCode();
62-
var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
63-
return Deserialize<List<SchemaObject>>(json, new SchemaPropertyJsonConverter());
60+
.ConfigureAwait(false))
61+
{
62+
response.EnsureSuccessStatusCode();
63+
var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
64+
return Deserialize<List<SchemaObject>>(json, new SchemaPropertyJsonConverter());
65+
}
6466
}
6567

6668
public async Task<List<SchemaTreeClass>> GetSchemaTreeClasses()
6769
{
68-
var response = await this.httpClient
70+
using (var response = await this.httpClient
6971
.GetAsync(new Uri("/docs/tree.jsonld", UriKind.Relative))
70-
.ConfigureAwait(false);
71-
response.EnsureSuccessStatusCode();
72-
var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
73-
var schemaClass = Deserialize<SchemaTreeClass>(json);
74-
return EnumerableExtensions
75-
.Traverse(schemaClass, x => x.Children)
76-
.ToList();
72+
.ConfigureAwait(false))
73+
{
74+
response.EnsureSuccessStatusCode();
75+
var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
76+
var schemaClass = Deserialize<SchemaTreeClass>(json);
77+
return EnumerableExtensions
78+
.Traverse(schemaClass, x => x.Children)
79+
.ToList();
80+
}
7781
}
7882

7983
protected override void DisposeManaged() => this.httpClient.Dispose();

Source/Schema.NET.Tool/Schema.NET.Tool.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup Label="Package References">
13-
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" PrivateAssets="all" Version="2.9.2" />
13+
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" PrivateAssets="all" Version="2.9.3" />
1414
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
1515
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" Version="1.1.118" />
1616
</ItemGroup>

0 commit comments

Comments
 (0)