Skip to content

Commit 881ce60

Browse files
authored
[CI Visibility] Adding nullability checks (#6374)
## Summary of changes This PR adds the nullability check to all CI Visibility classes.
1 parent 9216eee commit 881ce60

File tree

98 files changed

+2670
-2654
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+2670
-2654
lines changed

tracer/missing-nullability-files.csv

-80
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,6 @@ src/Datadog.Trace/AppSec/SecurityConstants.cs
6666
src/Datadog.Trace/AppSec/SpanExtensions.cs
6767
src/Datadog.Trace/AspNet/MimeTypes.cs
6868
src/Datadog.Trace/AspNet/TracingHttpModule.cs
69-
src/Datadog.Trace/Ci/CITracerManager.cs
70-
src/Datadog.Trace/Ci/CITracerManagerFactory.cs
71-
src/Datadog.Trace/Ci/CodeOwners.cs
72-
src/Datadog.Trace/Ci/IEvent.cs
7369
src/Datadog.Trace/ClrProfiler/AutomaticTracer.cs
7470
src/Datadog.Trace/ClrProfiler/CallTargetKind.cs
7571
src/Datadog.Trace/ClrProfiler/ClrNames.cs
@@ -151,7 +147,6 @@ src/Datadog.Trace/PlatformHelpers/ContainerMetadata.cs
151147
src/Datadog.Trace/PlatformHelpers/PlatformStrategy.cs
152148
src/Datadog.Trace/PlatformHelpers/ServiceFabric.cs
153149
src/Datadog.Trace/Processors/ITagProcessor.cs
154-
src/Datadog.Trace/Processors/ITraceProcessor.cs
155150
src/Datadog.Trace/Processors/NormalizerTraceProcessor.cs
156151
src/Datadog.Trace/Processors/ObfuscatorTagsProcessor.cs
157152
src/Datadog.Trace/Processors/ObfuscatorTraceProcessor.cs
@@ -264,27 +259,6 @@ src/Datadog.Trace/Agent/Transports/MimeTypes.cs
264259
src/Datadog.Trace/Agent/Transports/SocketHandlerRequestFactory.cs
265260
src/Datadog.Trace/AppSec/Waf/WafConstants.cs
266261
src/Datadog.Trace/AppSec/Waf/WafReturnCode.cs
267-
src/Datadog.Trace/Ci/Agent/ApmAgentWriter.cs
268-
src/Datadog.Trace/Ci/Agent/CIVisibilityProtocolWriter.cs
269-
src/Datadog.Trace/Ci/Agent/CIWriterFileSender.cs
270-
src/Datadog.Trace/Ci/Agent/CIWriterHttpSender.cs
271-
src/Datadog.Trace/Ci/Agent/ICIVisibilityProtocolWriterSender.cs
272-
src/Datadog.Trace/Ci/Agent/IEventWriter.cs
273-
src/Datadog.Trace/Ci/Processors/OriginTagTraceProcessor.cs
274-
src/Datadog.Trace/Ci/Processors/TestSuiteVisibilityProcessor.cs
275-
src/Datadog.Trace/Ci/Sampling/CISampler.cs
276-
src/Datadog.Trace/Ci/Tagging/TestModuleSpanTags.cs
277-
src/Datadog.Trace/Ci/Tagging/TestSessionSpanTags.cs
278-
src/Datadog.Trace/Ci/Tagging/TestSpanTags.cs
279-
src/Datadog.Trace/Ci/Tagging/TestSuiteSpanTags.cs
280-
src/Datadog.Trace/Ci/Tags/BenchmarkTestTags.cs
281-
src/Datadog.Trace/Ci/Tags/BuildTags.cs
282-
src/Datadog.Trace/Ci/Tags/CodeCoverageTags.cs
283-
src/Datadog.Trace/Ci/Tags/CommonTags.cs
284-
src/Datadog.Trace/Ci/Tags/IntelligentTestRunnerTags.cs
285-
src/Datadog.Trace/Ci/Tags/TestTags.cs
286-
src/Datadog.Trace/Ci/Telemetry/TelemetryHelper.cs
287-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/AutoInstrumentationExtensions.cs
288262
src/Datadog.Trace/ClrProfiler/Helpers/HttpBypassHelper.cs
289263
src/Datadog.Trace/ClrProfiler/Helpers/Interception.cs
290264
src/Datadog.Trace/ClrProfiler/ServerlessInstrumentation/LambdaMetadata.cs
@@ -403,22 +377,6 @@ src/Datadog.Trace/AppSec/Waf/ReturnTypes.Managed/Rule.cs
403377
src/Datadog.Trace/AppSec/Waf/ReturnTypes.Managed/RuleMatch.cs
404378
src/Datadog.Trace/AppSec/Waf/ReturnTypes.Managed/Tags.cs
405379
src/Datadog.Trace/AppSec/Waf/ReturnTypes.Managed/WafMatch.cs
406-
src/Datadog.Trace/Ci/Agent/MessagePack/CIFormatterResolver.cs
407-
src/Datadog.Trace/Ci/Agent/MessagePack/CIVisibilityEventMessagePackFormatter.cs
408-
src/Datadog.Trace/Ci/Agent/MessagePack/CoveragePayloadMessagePackFormatter.cs
409-
src/Datadog.Trace/Ci/Agent/MessagePack/EventMessagePackFormatter.cs
410-
src/Datadog.Trace/Ci/Agent/MessagePack/IEventMessagePackFormatter.cs
411-
src/Datadog.Trace/Ci/Agent/MessagePack/SpanMessagePackFormatter.cs
412-
src/Datadog.Trace/Ci/Agent/MessagePack/TestCoverageMessagePackFormatter.cs
413-
src/Datadog.Trace/Ci/Agent/Payloads/CICodeCoveragePayload.cs
414-
src/Datadog.Trace/Ci/Agent/Payloads/CITestCyclePayload.cs
415-
src/Datadog.Trace/Ci/Agent/Payloads/CIVisibilityProtocolPayload.cs
416-
src/Datadog.Trace/Ci/Agent/Payloads/EventPlatformPayload.cs
417-
src/Datadog.Trace/Ci/Agent/Payloads/EventsBuffer.cs
418-
src/Datadog.Trace/Ci/Agent/Payloads/MultipartPayload.cs
419-
src/Datadog.Trace/Ci/Coverage/Attributes/AvoidCoverageAttribute.cs
420-
src/Datadog.Trace/Ci/Coverage/Attributes/CoveredAssemblyAttribute.cs
421-
src/Datadog.Trace/Ci/Coverage/Exceptions/PdbNotFoundException.cs
422380
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/AdoNet/AdoNetClientInstrumentMethodsAttribute.cs
423381
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/AdoNet/AdoNetConstants.cs
424382
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/AdoNet/AdoNetDefinitions.cs
@@ -551,7 +509,6 @@ src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Process/EnvironmentVariablesSc
551509
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Process/ProcessStartIntegration.cs
552510
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Process/ProcessStartTags.cs
553511
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/RabbitMQ/RabbitMQConstants.cs
554-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/Common.cs
555512
src/Datadog.Trace/Debugger/Configurations/Models/Capture.cs
556513
src/Datadog.Trace/Debugger/Configurations/Models/DebuggerExpression.cs
557514
src/Datadog.Trace/Debugger/Configurations/Models/EvaluateAt.cs
@@ -589,7 +546,6 @@ src/Datadog.Trace/Util/Http/QueryStringObfuscation/NullObfuscator.cs
589546
src/Datadog.Trace/Util/Http/QueryStringObfuscation/Obfuscator.cs
590547
src/Datadog.Trace/Util/Http/QueryStringObfuscation/ObfuscatorBase.cs
591548
src/Datadog.Trace/Util/Http/QueryStringObfuscation/ObfuscatorFactory.cs
592-
src/Datadog.Trace/Ci/Coverage/Models/Tests/FileCoverage.cs
593549
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/AdoNet/MySql/MySqlDefinitions.cs
594550
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/AdoNet/Npgsql/NpgsqlDefinitions.cs
595551
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/AdoNet/Oracle/OracleDefinitions.cs
@@ -692,42 +648,6 @@ src/Datadog.Trace/ClrProfiler/AutoInstrumentation/MongoDb/BsonSerialization/Mong
692648
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Redis/ServiceStack/IRedisNativeClient.cs
693649
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Redis/ServiceStack/RedisNativeClientSendReceiveIntegration.cs
694650
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Redis/ServiceStack/RedisNativeClientSendReceiveIntegration_6_2_0.cs
695-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/ITestAssemblyInfo.cs
696-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/ITestClassInfo.cs
697-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/ITestMethod.cs
698-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/ITestMethodInfo.cs
699-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/ITestMethodOptions.cs
700-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/ITestMethodRunner.cs
701-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/ItrSkipTestMethodExecutor.cs
702-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/MsTestIntegration.cs
703-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestAssemblyInfoExecuteAssemblyCleanupIntegration.cs
704-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestAssemblyInfoRunAssemblyCleanupIntegration.cs
705-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestAssemblyInfoRunAssemblyInitializeIntegration.cs
706-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestCategoryAttributeStruct.cs
707-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestClassInfoExecuteClassCleanupIntegration.cs
708-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestClassInfoRunClassCleanupIntegration.cs
709-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestClassInfoRunClassInitializeIntegration.cs
710-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestContextStruct.cs
711-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestMethodContextStruct.cs
712-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestMethodRunnerExecuteTestIntegration.cs
713-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/TestPropertyAttributeStruct.cs
714-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/UnitTestOutcome.cs
715-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/UnitTestResultOutcome.cs
716-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/UnitTestResultStruct.cs
717-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/MsTestV2/UnitTestRunnerRunCleanupIntegration.cs
718-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/FailureSite.cs
719-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/ICompositeWorkItem.cs
720-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/IMethodInfo.cs
721-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/IPropertyBag.cs
722-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/IResultState.cs
723-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/ITest.cs
724-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/ITestExecutionContext.cs
725-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/ITestSuite.cs
726-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/IWorkItem.cs
727-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/NUnitWorkItemPerformWorkIntegration.cs
728-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/NUnitWorkItemWorkItemCompleteIntegration.cs
729-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/RunState.cs
730-
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Testing/NUnit/TestStatus.cs
731651
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Azure/Functions/Isolated/FunctionExecutionMiddlewareInvokeIntegration.cs
732652
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Grpc/GrpcLegacy/Client/CachedMetadataHelper.cs
733653
src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Grpc/GrpcLegacy/Client/TemporaryHeaders.cs

tracer/src/Datadog.Trace.BenchmarkDotNet/DatadogExporter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public IEnumerable<string> ExportToFiles(Summary summary, ILogger consoleLogger)
148148

149149
if (benchmarkCase.HasParameters)
150150
{
151-
var testParameters = new TestParameters { Arguments = new Dictionary<string, object>(), Metadata = new Dictionary<string, object>() };
151+
var testParameters = new TestParameters { Arguments = new Dictionary<string, object?>(), Metadata = new Dictionary<string, object?>() };
152152
foreach (var parameter in benchmarkCase.Parameters.Items)
153153
{
154154
var parameterValue = ClrProfiler.AutoInstrumentation.Testing.Common.GetParametersValueData(parameter.Value);

tracer/src/Datadog.Trace/Ci/Agent/ApmAgentWriter.cs

+50-50
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License.
33
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
44
// </copyright>
5+
#nullable enable
56

67
using System;
78
using System.Collections.Generic;
@@ -11,70 +12,69 @@
1112
using Datadog.Trace.Ci.EventModel;
1213
using Datadog.Trace.Configuration;
1314

14-
namespace Datadog.Trace.Ci.Agent
15+
namespace Datadog.Trace.Ci.Agent;
16+
17+
/// <summary>
18+
/// APM Agent Writer for CI Visibility
19+
/// </summary>
20+
internal class ApmAgentWriter : IEventWriter
1521
{
16-
/// <summary>
17-
/// APM Agent Writer for CI Visibility
18-
/// </summary>
19-
internal class ApmAgentWriter : IEventWriter
22+
private const int DefaultMaxBufferSize = 1024 * 1024 * 10;
23+
24+
[ThreadStatic]
25+
private static Span[]? _spanArray;
26+
private readonly AgentWriter _agentWriter;
27+
28+
public ApmAgentWriter(ImmutableTracerSettings settings, Action<Dictionary<string, float>> updateSampleRates, IDiscoveryService discoveryService, int maxBufferSize = DefaultMaxBufferSize)
2029
{
21-
private const int DefaultMaxBufferSize = 1024 * 1024 * 10;
30+
var partialFlushEnabled = settings.ExporterInternal.PartialFlushEnabledInternal;
31+
var apiRequestFactory = TracesTransportStrategy.Get(settings.ExporterInternal);
32+
var api = new Api(apiRequestFactory, null, updateSampleRates, partialFlushEnabled);
33+
var statsAggregator = StatsAggregator.Create(api, settings, discoveryService);
2234

23-
[ThreadStatic]
24-
private static Span[] _spanArray;
25-
private readonly AgentWriter _agentWriter;
35+
_agentWriter = new AgentWriter(api, statsAggregator, null, maxBufferSize: maxBufferSize, appsecStandaloneEnabled: settings.AppsecStandaloneEnabledInternal);
36+
}
2637

27-
public ApmAgentWriter(ImmutableTracerSettings settings, Action<Dictionary<string, float>> updateSampleRates, IDiscoveryService discoveryService, int maxBufferSize = DefaultMaxBufferSize)
28-
{
29-
var partialFlushEnabled = settings.ExporterInternal.PartialFlushEnabledInternal;
30-
var apiRequestFactory = TracesTransportStrategy.Get(settings.ExporterInternal);
31-
var api = new Api(apiRequestFactory, null, updateSampleRates, partialFlushEnabled);
32-
var statsAggregator = StatsAggregator.Create(api, settings, discoveryService);
38+
public ApmAgentWriter(IApi api, int maxBufferSize = DefaultMaxBufferSize)
39+
{
40+
_agentWriter = new AgentWriter(api, null, null, maxBufferSize: maxBufferSize);
41+
}
3342

34-
_agentWriter = new AgentWriter(api, statsAggregator, null, maxBufferSize: maxBufferSize, appsecStandaloneEnabled: settings.AppsecStandaloneEnabledInternal);
35-
}
43+
public void WriteEvent(IEvent @event)
44+
{
45+
// To keep compatibility with the agent version of the payload, any IEvent conversion to span
46+
// goes here.
3647

37-
public ApmAgentWriter(IApi api, int maxBufferSize = DefaultMaxBufferSize)
48+
if (_spanArray is not { } spanArray)
3849
{
39-
_agentWriter = new AgentWriter(api, null, null, maxBufferSize: maxBufferSize);
50+
spanArray = new Span[1];
51+
_spanArray = spanArray;
4052
}
4153

42-
public void WriteEvent(IEvent @event)
54+
if (CIVisibilityEventsFactory.GetSpan(@event) is { } span)
4355
{
44-
// To keep compatibility with the agent version of the payload, any IEvent conversion to span
45-
// goes here.
46-
47-
if (_spanArray is not { } spanArray)
48-
{
49-
spanArray = new Span[1];
50-
_spanArray = spanArray;
51-
}
52-
53-
if (CIVisibilityEventsFactory.GetSpan(@event) is { } span)
54-
{
55-
spanArray[0] = span;
56-
WriteTrace(new ArraySegment<Span>(spanArray));
57-
}
56+
spanArray[0] = span;
57+
WriteTrace(new ArraySegment<Span>(spanArray));
5858
}
59+
}
5960

60-
public Task FlushAndCloseAsync()
61-
{
62-
return _agentWriter.FlushAndCloseAsync();
63-
}
61+
public Task FlushAndCloseAsync()
62+
{
63+
return _agentWriter.FlushAndCloseAsync();
64+
}
6465

65-
public Task FlushTracesAsync()
66-
{
67-
return _agentWriter.FlushTracesAsync();
68-
}
66+
public Task FlushTracesAsync()
67+
{
68+
return _agentWriter.FlushTracesAsync();
69+
}
6970

70-
public Task<bool> Ping()
71-
{
72-
return _agentWriter.Ping();
73-
}
71+
public Task<bool> Ping()
72+
{
73+
return _agentWriter.Ping();
74+
}
7475

75-
public void WriteTrace(ArraySegment<Span> trace)
76-
{
77-
_agentWriter.WriteTrace(trace);
78-
}
76+
public void WriteTrace(ArraySegment<Span> trace)
77+
{
78+
_agentWriter.WriteTrace(trace);
7979
}
8080
}

0 commit comments

Comments
 (0)