Skip to content

Commit 8079888

Browse files
committed
Enable nullable reference type warnings
1 parent e5d8238 commit 8079888

25 files changed

Lines changed: 99 additions & 75 deletions

Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
<PackageProjectUrl>https://github.com/sharpbrick/powered-up</PackageProjectUrl>
77
<RepositoryUrl>https://github.com/sharpbrick/powered-up</RepositoryUrl>
88
<PackageLicenseExpression>MIT</PackageLicenseExpression>
9+
<Nullable>warnings</Nullable>
910
</PropertyGroup>
1011
</Project>

examples/SharpBrick.PoweredUp.Examples/BaseExample.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public async Task InitExampleAndDiscoverAsync(IServiceProvider serviceProvider,
3131

3232
Host = serviceProvider.GetService<PoweredUpHost>();
3333

34-
Log = serviceProvider.GetService<ILoggerFactory>().CreateLogger("Example");
34+
Log = serviceProvider.GetRequiredService<ILoggerFactory>().CreateLogger("Example");
3535

3636
var enableTrace = bool.TryParse(configuration["EnableTrace"], out var x) && x;
3737

@@ -49,7 +49,7 @@ public virtual Task DiscoverAsync(bool enableTrace)
4949
// add this when you are interested in a tracing of the message ("human readable")
5050
if (enableTrace)
5151
{
52-
var tracer = hub.ServiceProvider.GetService<TraceMessages>();
52+
var tracer = hub.ServiceProvider.GetRequiredService<TraceMessages>();
5353
await tracer.ExecuteAsync();
5454
}
5555

examples/SharpBrick.PoweredUp.Examples/ExampleCalibrationSteering.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public override async Task ExecuteAsync()
1414

1515
var motor = technicMediumHub.A.GetDevice<TechnicLargeLinearMotor>();
1616

17-
var calibration = ServiceProvider.GetService<LinearMidCalibration>();
17+
var calibration = ServiceProvider.GetRequiredService<LinearMidCalibration>();
1818
await calibration.ExecuteAsync(motor);
1919
await technicMediumHub.WaitButtonClickAsync();
2020

examples/SharpBrick.PoweredUp.Examples/ExampleRampUp.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public override async Task ExecuteAsync()
1818
var motor = technicMediumHub.A.GetDevice<TechnicLargeLinearMotor>();
1919

2020
// ramp up with linear speed
21-
var rampUp = ServiceProvider.GetService<LinearSpeedChange>();
21+
var rampUp = ServiceProvider.GetRequiredService<LinearSpeedChange>();
2222

2323
await technicMediumHub.RgbLight.SetRgbColorNoAsync(PoweredUpColor.Red);
2424

@@ -33,7 +33,7 @@ public override async Task ExecuteAsync()
3333
await technicMediumHub.RgbLight.SetRgbColorNoAsync(PoweredUpColor.Orange);
3434

3535
// ramp down with linear speed
36-
var rampDown = ServiceProvider.GetService<LinearSpeedChange>();
36+
var rampDown = ServiceProvider.GetRequiredService<LinearSpeedChange>();
3737

3838
var beforeOrangePhase = stopWatch.ElapsedMilliseconds;
3939
await rampDown.ExecuteAsync(motor, 100, 0, 100, 20_000);

examples/SharpBrick.PoweredUp.Examples/Program.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ static async Task Main(string[] args)
3535
var typeToExecute = Assembly
3636
.GetExecutingAssembly()
3737
.GetTypes()
38-
.FirstOrDefault(x => x.FullName.StartsWith($"Example.Example{exampleToExecute}"));
38+
.FirstOrDefault(x => x.FullName?.StartsWith($"Example.Example{exampleToExecute}") == true);
3939

4040
if (typeToExecute is null)
4141
{
@@ -45,7 +45,11 @@ static async Task Main(string[] args)
4545
}
4646

4747
var example = Activator.CreateInstance(typeToExecute) as Example.BaseExample;
48-
48+
if (example is null)
49+
{
50+
Console.WriteLine("Could not create example instance.");
51+
return;
52+
}
4953

5054
// (2) build the DI container
5155
var serviceCollection = new ServiceCollection();

examples/SharpBrick.PoweredUp.ExampplesOnProtocol/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
.BuildServiceProvider();
1616

1717
// getting utilities
18-
var bt = serviceProvider.GetService<IPoweredUpBluetoothAdapter>();
19-
var host = serviceProvider.GetService<PoweredUpHost>();
18+
var bt = serviceProvider.GetRequiredService<IPoweredUpBluetoothAdapter>();
19+
var host = serviceProvider.GetRequiredService<PoweredUpHost>();
2020

2121
// discover a LWP bluetooth device
2222
var tcs = new TaskCompletionSource<ILegoWirelessProtocol>();

src/SharpBrick.PoweredUp.BlueGigaBLE/BlueGigaBLEPoweredUpBluetoothAdapater.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ async void GAPScanResponseEvent(object sender, BleScanResponseReceivedEventArgs
8585
//we only want to discover Lego-devices
8686
//filter for correct service-GUID for LEGO-Hub, containing manufacturerData and the name
8787
var addressNumber = BlueGigaBLEHelper.ByteArrayToUlong(e.Address);
88-
var bleAdvertisingListFound = bleParsedData.TryGetValue(addressNumber, out var actualListAdvertisingData);
89-
if (!bleAdvertisingListFound)
88+
if (!bleParsedData.TryGetValue(addressNumber, out var actualListAdvertisingData))
9089
{
9190
actualListAdvertisingData = bleParsedData.AddOrUpdate(addressNumber, new List<BleAdvertisingData>(), (oldkey, oldvalue) => oldvalue = new List<BleAdvertisingData>());
9291
}

src/SharpBrick.PoweredUp.Cli/Program.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ static async Task<int> Main(string[] args)
8686

8787
await AddTraceWriterAsync(scopedServiceProvider, enableTrace);
8888

89-
scopedServiceProvider.GetService<BluetoothKernel>().BluetoothDeviceInfo = bluetoothDeviceInfo;
89+
scopedServiceProvider.GetRequiredService<BluetoothKernel>().BluetoothDeviceInfo = bluetoothDeviceInfo;
9090

91-
var deviceListCli = scopedServiceProvider.GetService<DevicesList>(); // ServiceLocator ok: transient factory
91+
var deviceListCli = scopedServiceProvider.GetRequiredService<DevicesList>(); // ServiceLocator ok: transient factory
9292

9393
await deviceListCli.ExecuteAsync(systemType);
9494
}
@@ -138,11 +138,11 @@ static async Task<int> Main(string[] args)
138138

139139
await AddTraceWriterAsync(scopedServiceProvider, enableTrace);
140140

141-
scopedServiceProvider.GetService<BluetoothKernel>().BluetoothDeviceInfo = bluetoothDeviceInfo;
141+
scopedServiceProvider.GetRequiredService<BluetoothKernel>().BluetoothDeviceInfo = bluetoothDeviceInfo;
142142

143-
var dumpStaticPortInfoCommand = scopedServiceProvider.GetService<DumpStaticPortInfo>(); // ServiceLocator ok: transient factory
143+
var dumpStaticPortInfoCommand = scopedServiceProvider.GetRequiredService<DumpStaticPortInfo>(); // ServiceLocator ok: transient factory
144144

145-
var port = byte.Parse(portOption.Value());
145+
var port = byte.TryParse(portOption.Value(), out var parsedPort) ? parsedPort : (byte)0;
146146

147147
await dumpStaticPortInfoCommand.ExecuteAsync(systemType, port, headerEnabled);
148148
}
@@ -193,7 +193,7 @@ static async Task<int> Main(string[] args)
193193

194194
await AddTraceWriterAsync(scopedServiceProvider, enableTrace);
195195

196-
var prettyPrintCommand = scopedServiceProvider.GetService<PrettyPrint>(); // ServiceLocator ok: transient factory
196+
var prettyPrintCommand = scopedServiceProvider.GetRequiredService<PrettyPrint>(); // ServiceLocator ok: transient factory
197197

198198
TextReader reader = Console.In;
199199

@@ -273,7 +273,7 @@ public static async Task AddTraceWriterAsync(IServiceProvider serviceProvider, b
273273
{
274274
if (enableTrace)
275275
{
276-
var traceMessages = serviceProvider.GetService<TraceMessages>(); // ServiceLocator ok: transient factory
276+
var traceMessages = serviceProvider.GetRequiredService<TraceMessages>(); // ServiceLocator ok: transient factory
277277

278278
await traceMessages.ExecuteAsync();
279279
}

src/SharpBrick.PoweredUp/Deployment/HubExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ private static Action<DeploymentModelError[]> LogErrors(Hub self)
105105
{
106106
return errors =>
107107
{
108-
var logger = self.ServiceProvider.GetService<ILoggerFactory>().CreateLogger<Hub>();
108+
var logger = self.ServiceProvider.GetRequiredService<ILoggerFactory>().CreateLogger<Hub>();
109109
if (errors.Length > 0)
110110
{
111111

src/SharpBrick.PoweredUp/Hubs/HubFactory.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,24 @@ public HubFactory(IServiceProvider serviceProvider)
1414

1515
public Hub CreateByBluetoothManufacturerData(byte[] manufacturerData)
1616
{
17-
var hub = (manufacturerData is null || manufacturerData.Length < 3) ? null : Create(GetTypeFromSystemType(GetSystemTypeFromManufacturerData((PoweredUpHubManufacturerData)manufacturerData[1])));
17+
if (manufacturerData is null)
18+
{
19+
throw new ArgumentNullException(nameof(manufacturerData));
20+
}
21+
if (manufacturerData.Length < 3)
22+
{
23+
throw new ArgumentException("Manufacturer data must be at least 3 bytes long.", nameof(manufacturerData));
24+
}
25+
26+
var hub = Create(GetTypeFromSystemType(GetSystemTypeFromManufacturerData((PoweredUpHubManufacturerData)manufacturerData[1])));
1827
hub.Configure(0x00);
1928

2029
return hub;
2130
}
2231

2332
public THub Create<THub>() where THub : Hub
2433
{
25-
var hub = Create(typeof(THub)) as THub;
34+
var hub = (THub)Create(typeof(THub));
2635
hub.Configure(0x00);
2736

2837
return hub;

0 commit comments

Comments
 (0)