diff --git a/Directory.Build.props b/Directory.Build.props index cd3b7614..0b7c00ad 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -9,6 +9,7 @@ true true false + latest en-US $(NoWarn);NU5104 diff --git a/src/Grafana.OpenTelemetry.Base/ExporterSettings/GrafanaCloudConfigurationHelper.cs b/src/Grafana.OpenTelemetry.Base/ExporterSettings/GrafanaCloudConfigurationHelper.cs index df8bd0d8..f5a7f4e7 100644 --- a/src/Grafana.OpenTelemetry.Base/ExporterSettings/GrafanaCloudConfigurationHelper.cs +++ b/src/Grafana.OpenTelemetry.Base/ExporterSettings/GrafanaCloudConfigurationHelper.cs @@ -10,7 +10,7 @@ namespace Grafana.OpenTelemetry /// /// Helper class for Grafana Cloud configuration. /// - internal class GrafanaCloudConfigurationHelper + internal sealed class GrafanaCloudConfigurationHelper { private const string PathExtensionTraces = "/v1/traces"; private const string PathExtensionMetrics = "/v1/metrics"; diff --git a/src/Grafana.OpenTelemetry.Base/Grafana.OpenTelemetry.Base.csproj b/src/Grafana.OpenTelemetry.Base/Grafana.OpenTelemetry.Base.csproj index e752e097..8db98bde 100644 --- a/src/Grafana.OpenTelemetry.Base/Grafana.OpenTelemetry.Base.csproj +++ b/src/Grafana.OpenTelemetry.Base/Grafana.OpenTelemetry.Base.csproj @@ -47,4 +47,8 @@ + + true + + diff --git a/src/Grafana.OpenTelemetry.Base/GrafanaOpenTelemetryResourceDetector.cs b/src/Grafana.OpenTelemetry.Base/GrafanaOpenTelemetryResourceDetector.cs index 44870b9e..7f2ba9a9 100644 --- a/src/Grafana.OpenTelemetry.Base/GrafanaOpenTelemetryResourceDetector.cs +++ b/src/Grafana.OpenTelemetry.Base/GrafanaOpenTelemetryResourceDetector.cs @@ -9,7 +9,7 @@ namespace Grafana.OpenTelemetry { - internal class GrafanaOpenTelemetryResourceDetector : IResourceDetector + internal sealed class GrafanaOpenTelemetryResourceDetector : IResourceDetector { internal const string ResourceKey_DistroName = "telemetry.distro.name"; internal const string ResourceKey_DistroVersion = "telemetry.distro.version"; @@ -25,12 +25,12 @@ public GrafanaOpenTelemetryResourceDetector(GrafanaOpenTelemetrySettings setting public Resource Detect() { - var attributes = new List>(new KeyValuePair[] - { + var attributes = new List>( + [ new KeyValuePair(ResourceKey_DistroName, ResourceValue_DistroName), new KeyValuePair(ResourceKey_DistroVersion, GetDistroVersion()), new KeyValuePair(ResourceKey_DeploymentEnvironment, _settings.DeploymentEnvironment) - }); + ]); attributes.AddRange(_settings.ResourceAttributes); diff --git a/src/Grafana.OpenTelemetry.Base/GrafanaOpenTelemetrySettings.cs b/src/Grafana.OpenTelemetry.Base/GrafanaOpenTelemetrySettings.cs index 721559e5..40f10187 100644 --- a/src/Grafana.OpenTelemetry.Base/GrafanaOpenTelemetrySettings.cs +++ b/src/Grafana.OpenTelemetry.Base/GrafanaOpenTelemetrySettings.cs @@ -119,7 +119,7 @@ internal GrafanaOpenTelemetrySettings(IConfiguration configuration) Instrumentations.Remove(Instrumentation.AWSLambda); var disableInstrumentations = configuration[DisableInstrumentationsEnvVarName]; - char[] separators = new char[] { ',', ':' }; + char[] separators = [',', ':']; if (!string.IsNullOrEmpty(disableInstrumentations)) { diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/AWSInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/AWSInitializer.cs index f4383def..4743cd84 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/AWSInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/AWSInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class AWSInitializer : InstrumentationInitializer + internal sealed class AWSInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.AWS; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AWS")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.AWS", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddAWSInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/AWSLambdaInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/AWSLambdaInitializer.cs index 831c2ebd..bd2e1ad5 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/AWSLambdaInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/AWSLambdaInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class AWSLambdaInitializer : InstrumentationInitializer + internal sealed class AWSLambdaInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.AWSLambda; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Instrumentation.AWSLambda.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AWSLambda")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.AWSLambda", "OpenTelemetry.Instrumentation.AWSLambda.TracerProviderBuilderExtensions", "AddAWSLambdaConfigurations", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetCoreInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetCoreInitializer.cs index 3ad9c61c..c1f4e6be 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetCoreInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetCoreInitializer.cs @@ -8,26 +8,34 @@ namespace Grafana.OpenTelemetry { - internal class AspNetCoreInitializer : InstrumentationInitializer + internal sealed class AspNetCoreInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.AspNetCore; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.AspNetCoreInstrumentationTracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AspNetCore")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.AspNetCore", "OpenTelemetry.Trace.AspNetCoreInstrumentationTracerProviderBuilderExtensions", "AddAspNetCoreInstrumentation", - new object[] { builder }); + [builder]); } +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Metrics.AspNetCoreInstrumentationMeterProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AspNetCore")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeMetrics(MeterProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.AspNetCore", "OpenTelemetry.Metrics.AspNetCoreInstrumentationMeterProviderBuilderExtensions", "AddAspNetCoreInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetInitializer.cs index e8d5bb0e..95035ce9 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetInitializer.cs @@ -8,26 +8,34 @@ namespace Grafana.OpenTelemetry { - internal class AspNetInitializer : InstrumentationInitializer + internal sealed class AspNetInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.AspNet; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AspNet")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.AspNet", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddAspNetInstrumentation", - new object[] { builder }); + [builder]); } +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Metrics.MeterProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AspNet")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeMetrics(MeterProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.AspNet", "OpenTelemetry.Metrics.MeterProviderBuilderExtensions", "AddAspNetInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/CassandraInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/CassandraInitializer.cs index b4a030e6..eea2f248 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/CassandraInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/CassandraInitializer.cs @@ -8,17 +8,21 @@ namespace Grafana.OpenTelemetry { - internal class CassandraInitializer : InstrumentationInitializer + internal sealed class CassandraInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.Cassandra; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Metrics.MeterProviderBuilderExtensions", "OpenTelemetry.Instrumentation.Cassandra")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeMetrics(MeterProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.Cassandra", "OpenTelemetry.Metrics.MeterProviderBuilderExtensions", "AddCassandraInstrumentation", - new object[] { builder }); + [builder]); } protected override void InitializeTracing(TracerProviderBuilder builder) diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/ElasticsearchClientInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/ElasticsearchClientInitializer.cs index ef9bdf14..657624bb 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/ElasticsearchClientInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/ElasticsearchClientInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class ElasticsearchClientInitializer : InstrumentationInitializer + internal sealed class ElasticsearchClientInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.ElasticsearchClient; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.ElasticsearchClient")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.ElasticsearchClient", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddElasticsearchClientInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/EntityFrameworkCoreInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/EntityFrameworkCoreInitializer.cs index 5b736aa5..e9648c5d 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/EntityFrameworkCoreInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/EntityFrameworkCoreInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class EntityFrameworkCoreInitializer : InstrumentationInitializer + internal sealed class EntityFrameworkCoreInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.EntityFrameworkCore; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.EntityFrameworkCore")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.EntityFrameworkCore", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddEntityFrameworkCoreInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/GrpcNetClientInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/GrpcNetClientInitializer.cs index 35b68152..f27b11ac 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/GrpcNetClientInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/GrpcNetClientInitializer.cs @@ -7,7 +7,7 @@ namespace Grafana.OpenTelemetry { - internal class GrpcNetClientInitializer : InstrumentationInitializer + internal sealed class GrpcNetClientInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.GrpcNetClient; diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/HangfireInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/HangfireInitializer.cs index 4b631386..76156d6d 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/HangfireInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/HangfireInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class HangfireInitializer : InstrumentationInitializer + internal sealed class HangfireInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.Hangfire; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.Hangfire")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.Hangfire", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddHangfireInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/HttpClientInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/HttpClientInitializer.cs index 7812f153..fb9bed9e 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/HttpClientInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/HttpClientInitializer.cs @@ -8,7 +8,7 @@ namespace Grafana.OpenTelemetry { - internal class HttpClientInitializer : InstrumentationInitializer + internal sealed class HttpClientInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.HttpClient; diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/MySqlDataInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/MySqlDataInitializer.cs index a66946de..749b88fc 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/MySqlDataInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/MySqlDataInitializer.cs @@ -7,10 +7,15 @@ namespace Grafana.OpenTelemetry { - internal class MySqlDataInitializer : InstrumentationInitializer + internal sealed class MySqlDataInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.MySqlData; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "MySQL.Data.OpenTelemetry")] + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.MySqlData")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { // MySQL.Data.OpenTelemetry @@ -18,14 +23,14 @@ protected override void InitializeTracing(TracerProviderBuilder builder) "MySQL.Data.OpenTelemetry", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddConnectorNet", - new object[] { builder }); + [builder]); // OpenTelemetry.Instrumentation.MySqlData ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.MySqlData", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddMySqlDataInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/NetRuntimeMetricsInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/NetRuntimeMetricsInitializer.cs index 6d7e8465..049788c5 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/NetRuntimeMetricsInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/NetRuntimeMetricsInitializer.cs @@ -7,7 +7,7 @@ namespace Grafana.OpenTelemetry { - internal class NetRuntimeMetricsInitializer : InstrumentationInitializer + internal sealed class NetRuntimeMetricsInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.NetRuntime; diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/OwinInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/OwinInitializer.cs index c557c7a7..2885a502 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/OwinInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/OwinInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class OwinInitializer : InstrumentationInitializer + internal sealed class OwinInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.Owin; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.Owin")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.Owin", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddOwinInstrumentation", - new object[] { builder, null }); + [builder, null]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/ProcessMetricsInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/ProcessMetricsInitializer.cs index 65614f58..a5b6c917 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/ProcessMetricsInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/ProcessMetricsInitializer.cs @@ -7,7 +7,7 @@ namespace Grafana.OpenTelemetry { - internal class ProcessMetricsInitializer : InstrumentationInitializer + internal sealed class ProcessMetricsInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.Process; diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/QuartzInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/QuartzInitializer.cs index 9403fcee..e94436ae 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/QuartzInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/QuartzInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class QuartzInitializer : InstrumentationInitializer + internal sealed class QuartzInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.Quartz; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TraceProviderBuilderExtensions", "OpenTelemetry.Instrumentation.Quartz")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.Quartz", "OpenTelemetry.Trace.TraceProviderBuilderExtensions", "AddQuartzInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/SqlClientInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/SqlClientInitializer.cs index 501dfd3d..0ba8b0b3 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/SqlClientInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/SqlClientInitializer.cs @@ -11,7 +11,7 @@ namespace Grafana.OpenTelemetry #if NET [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Trimming is not yet supported with SqlClient instrumentation.")] #endif - internal class SqlClientInitializer : InstrumentationInitializer + internal sealed class SqlClientInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.SqlClient; diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/StackExchangeRedisInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/StackExchangeRedisInitializer.cs index d98ee918..6a2c8e03 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/StackExchangeRedisInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/StackExchangeRedisInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class StackExchangeRedisInitializer : InstrumentationInitializer + internal sealed class StackExchangeRedisInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.StackExchangeRedis; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.StackExchangeRedis")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.StackExchangeRedis", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddRedisInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/Instrumentations/WcfInitializer.cs b/src/Grafana.OpenTelemetry.Base/Instrumentations/WcfInitializer.cs index ddf5e14e..0cc47015 100644 --- a/src/Grafana.OpenTelemetry.Base/Instrumentations/WcfInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/Instrumentations/WcfInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class WcfInitializer : InstrumentationInitializer + internal sealed class WcfInitializer : InstrumentationInitializer { public override Instrumentation Id { get; } = Instrumentation.Wcf; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.Wcf")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override void InitializeTracing(TracerProviderBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Instrumentation.Wcf", "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "AddWcfInstrumentation", - new object[] { builder }); + [builder]); } } } diff --git a/src/Grafana.OpenTelemetry.Base/ReflectionHelper.cs b/src/Grafana.OpenTelemetry.Base/ReflectionHelper.cs index ce4ac384..a39bd909 100644 --- a/src/Grafana.OpenTelemetry.Base/ReflectionHelper.cs +++ b/src/Grafana.OpenTelemetry.Base/ReflectionHelper.cs @@ -10,11 +10,14 @@ namespace Grafana.OpenTelemetry { internal static class ReflectionHelper { +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types might be removed")] +#endif internal static void CallStaticMethod(string assemblyName, string typeName, string methodName, object[] arguments) { var assembly = Assembly.Load(assemblyName); var type = assembly.GetType(typeName); - var method = type.GetMethod(methodName, arguments.Select(obj => obj is null ? null : obj.GetType()).ToArray()); + var method = type.GetMethod(methodName, [.. arguments.Select(obj => obj?.GetType())]); method.Invoke(null, arguments); } } diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEBSDetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEBSDetectorInitializer.cs index c8e9b122..7e8daf0d 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEBSDetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEBSDetectorInitializer.cs @@ -8,17 +8,21 @@ namespace Grafana.OpenTelemetry { - internal class AWSEBSDetectorInitializer : ResourceDetectorInitializer + internal sealed class AWSEBSDetectorInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.AWSEBS; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Resources.AWSResourceBuilderExtensions", "OpenTelemetry.Resources.AWS")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override ResourceBuilder InitializeResourceDetector(ResourceBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Resources.AWS", "OpenTelemetry.Resources.AWSResourceBuilderExtensions", "AddAWSEBSDetector", - new object[] { builder }); + [builder]); return builder; } } diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEC2DetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEC2DetectorInitializer.cs index cfd1dd05..dd50df34 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEC2DetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEC2DetectorInitializer.cs @@ -8,17 +8,21 @@ namespace Grafana.OpenTelemetry { - internal class AWSEC2DetectorInitializer : ResourceDetectorInitializer + internal sealed class AWSEC2DetectorInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.AWSEC2; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Resources.AWSResourceBuilderExtensions", "OpenTelemetry.Resources.AWS")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override ResourceBuilder InitializeResourceDetector(ResourceBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Resources.AWS", "OpenTelemetry.Resources.AWSResourceBuilderExtensions", "AddAWSEC2Detector", - new object[] { builder }); + [builder]); return builder; } } diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSECSDetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSECSDetectorInitializer.cs index 37ed56d6..2f1a5185 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSECSDetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSECSDetectorInitializer.cs @@ -8,17 +8,21 @@ namespace Grafana.OpenTelemetry { - internal class AWSECSDetectorInitializer : ResourceDetectorInitializer + internal sealed class AWSECSDetectorInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.AWSECS; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Resources.AWSResourceBuilderExtensions", "OpenTelemetry.Resources.AWS")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override ResourceBuilder InitializeResourceDetector(ResourceBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Resources.AWS", "OpenTelemetry.Resources.AWSResourceBuilderExtensions", "AddAWSECSDetector", - new object[] { builder }); + [builder]); return builder; } } diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEKSDetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEKSDetectorInitializer.cs index 030192cc..1145f7b1 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEKSDetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AWSEKSDetectorInitializer.cs @@ -8,17 +8,21 @@ namespace Grafana.OpenTelemetry { - internal class AWSEKSDetectorInitializer : ResourceDetectorInitializer + internal sealed class AWSEKSDetectorInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.AWSEKS; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Resources.AWSResourceBuilderExtensions", "OpenTelemetry.Resources.AWS")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override ResourceBuilder InitializeResourceDetector(ResourceBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Resources.AWS", "OpenTelemetry.Resources.AWSResourceBuilderExtensions", "AddAWSEKSDetector", - new object[] { builder }); + [builder]); return builder; } } diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureAppServiceDetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureAppServiceDetectorInitializer.cs index eaaffe1e..68f536c3 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureAppServiceDetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureAppServiceDetectorInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class AzureAppServiceDetectorInitializer : ResourceDetectorInitializer + internal sealed class AzureAppServiceDetectorInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.AzureAppService; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Resources.AzureResourceBuilderExtensions", "OpenTelemetry.Resources.Azure")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override ResourceBuilder InitializeResourceDetector(ResourceBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Resources.Azure", "OpenTelemetry.Resources.AzureResourceBuilderExtensions", "AddAzureAppServiceDetector", - new object[] { builder }); + [builder]); return builder; } } diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureContainerAppsDetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureContainerAppsDetectorInitializer.cs index e2beecc3..f006f6bb 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureContainerAppsDetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureContainerAppsDetectorInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class AzureContainerAppsDetectorInitializer : ResourceDetectorInitializer + internal sealed class AzureContainerAppsDetectorInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.AzureContainerApps; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Resources.AzureResourceBuilderExtensions", "OpenTelemetry.Resources.Azure")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override ResourceBuilder InitializeResourceDetector(ResourceBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Resources.Azure", "OpenTelemetry.Resources.AzureResourceBuilderExtensions", "AddAzureContainerAppsDetector", - new object[] { builder }); + [builder]); return builder; } } diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureVMDetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureVMDetectorInitializer.cs index dcff5ffd..eaa38e12 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureVMDetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/AzureVMDetectorInitializer.cs @@ -7,17 +7,21 @@ namespace Grafana.OpenTelemetry { - internal class AzureVMDetectorInitializer : ResourceDetectorInitializer + internal sealed class AzureVMDetectorInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.AzureVM; +#if NET8_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Resources.AzureResourceBuilderExtensions", "OpenTelemetry.Resources.Azure")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)] +#endif protected override ResourceBuilder InitializeResourceDetector(ResourceBuilder builder) { ReflectionHelper.CallStaticMethod( "OpenTelemetry.Resources.Azure", "OpenTelemetry.Resources.AzureResourceBuilderExtensions", "AddAzureVMDetector", - new object[] { builder }); + [builder]); return builder; } } diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ContainerResource.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ContainerResource.cs index d61f9c99..c297a91e 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ContainerResource.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ContainerResource.cs @@ -9,7 +9,7 @@ namespace Grafana.OpenTelemetry { - internal class ContainerResourceInitializer : ResourceDetectorInitializer + internal sealed class ContainerResourceInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.Container; diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/HostDetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/HostDetectorInitializer.cs index d8af6d70..767ba5d0 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/HostDetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/HostDetectorInitializer.cs @@ -9,7 +9,7 @@ namespace Grafana.OpenTelemetry { - internal class HostResourceInitializer : ResourceDetectorInitializer + internal sealed class HostResourceInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.Host; diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/OperatingSystemResourceInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/OperatingSystemResourceInitializer.cs index 253a67d2..57f3098e 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/OperatingSystemResourceInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/OperatingSystemResourceInitializer.cs @@ -9,7 +9,7 @@ namespace Grafana.OpenTelemetry { - internal class OperatingSystemResourceInitializer : ResourceDetectorInitializer + internal sealed class OperatingSystemResourceInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.OperatingSystem; diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ProcessResourceInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ProcessResourceInitializer.cs index 3ecf8ea2..1b5181e7 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ProcessResourceInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ProcessResourceInitializer.cs @@ -9,7 +9,7 @@ namespace Grafana.OpenTelemetry { - internal class ProcessResourceInitializer : ResourceDetectorInitializer + internal sealed class ProcessResourceInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.Process; diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ProcessRuntimeResource.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ProcessRuntimeResource.cs index 9350352f..886fc0b2 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ProcessRuntimeResource.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ProcessRuntimeResource.cs @@ -9,7 +9,7 @@ namespace Grafana.OpenTelemetry { - internal class ProcessRuntimeResourceInitializer : ResourceDetectorInitializer + internal sealed class ProcessRuntimeResourceInitializer : ResourceDetectorInitializer { public override ResourceDetector Id { get; } = ResourceDetector.ProcessRuntime; diff --git a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ResourceDetectorInitializer.cs b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ResourceDetectorInitializer.cs index fd7e27f8..6d40c502 100644 --- a/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ResourceDetectorInitializer.cs +++ b/src/Grafana.OpenTelemetry.Base/ResourceDetectors/ResourceDetectorInitializer.cs @@ -12,8 +12,8 @@ namespace Grafana.OpenTelemetry { internal abstract class ResourceDetectorInitializer { - public static readonly ResourceDetectorInitializer[] Initializers = new ResourceDetectorInitializer[] - { + public static readonly ResourceDetectorInitializer[] Initializers = + [ #if !NETSTANDARD new AWSEBSDetectorInitializer(), new AWSEC2DetectorInitializer(), @@ -34,7 +34,7 @@ internal abstract class ResourceDetectorInitializer new ProcessResourceInitializer(), new ProcessRuntimeResourceInitializer() #endif - }; + ]; public abstract ResourceDetector Id { get; } diff --git a/src/Grafana.OpenTelemetry.Base/TrimWarnings.cs b/src/Grafana.OpenTelemetry.Base/TrimWarnings.cs new file mode 100644 index 00000000..7f8175b3 --- /dev/null +++ b/src/Grafana.OpenTelemetry.Base/TrimWarnings.cs @@ -0,0 +1,12 @@ +#if NET8_0_OR_GREATER + +namespace Grafana.OpenTelemetry; + +internal static class TrimWarnings +{ + internal const string Category = "ReflectionAnalysis"; + internal const string CheckId = "IL2026:RequiresUnreferencedCode"; + internal const string Justification = "[DynamicDependency] is used to preserve members."; +} + +#endif diff --git a/src/Grafana.OpenTelemetry/Grafana.OpenTelemetry.csproj b/src/Grafana.OpenTelemetry/Grafana.OpenTelemetry.csproj index 8ad90f6b..6b97d06c 100644 --- a/src/Grafana.OpenTelemetry/Grafana.OpenTelemetry.csproj +++ b/src/Grafana.OpenTelemetry/Grafana.OpenTelemetry.csproj @@ -57,4 +57,8 @@ + + true + + diff --git a/tests/Grafana.OpenTelemetry.Tests/ReflectionHelperTest.cs b/tests/Grafana.OpenTelemetry.Tests/ReflectionHelperTest.cs index 5878e990..8b074212 100644 --- a/tests/Grafana.OpenTelemetry.Tests/ReflectionHelperTest.cs +++ b/tests/Grafana.OpenTelemetry.Tests/ReflectionHelperTest.cs @@ -26,7 +26,7 @@ public void CallStaticMethod() typeof(ReflectionHelperTest).Assembly.GetName().Name, "Grafana.OpenTelemetry.Tests.ReflectionHelperTest", "Increment", - new object[] { 4 }); + [4]); Assert.Equal(4, Counter); } @@ -40,7 +40,7 @@ public void CallStaticMethodThrow() typeof(ReflectionHelperTest).Assembly.GetName().Name, "Not-exist", "Not-exist", - new object[] { 4 }); + [4]); }); } }