22// SPDX-License-Identifier: Apache-2.0
33
44using System . Collections . Immutable ;
5+ using System . Globalization ;
56using System . Text ;
67using Microsoft . CodeAnalysis ;
78using Microsoft . CodeAnalysis . CSharp . Syntax ;
@@ -57,30 +58,30 @@ private static TargetToGenerate CreateTargetToGenerate(AttributeData attribute)
5758
5859 var targetSignatureTypesBuilder = new StringBuilder ( ) ;
5960
60- targetSignatureTypesBuilder . AppendFormat ( "\" {0}\" " , returnTypeName ) ;
61+ targetSignatureTypesBuilder . AppendFormat ( CultureInfo . InvariantCulture , "\" {0}\" " , returnTypeName ) ;
6162
6263 foreach ( var parameterTypeName in parameterTypeNames )
6364 {
64- targetSignatureTypesBuilder . AppendFormat ( ", \" {0}\" " , parameterTypeName . Value ) ;
65+ targetSignatureTypesBuilder . AppendFormat ( CultureInfo . InvariantCulture , ", \" {0}\" " , parameterTypeName . Value ) ;
6566 }
6667
67- var signalType = int . Parse ( attribute . ConstructorArguments [ 8 ] . Value ! . ToString ( ) ) ;
68- var integrationKind = int . Parse ( attribute . ConstructorArguments [ 9 ] . Value ! . ToString ( ) ) ;
68+ var signalType = int . Parse ( attribute . ConstructorArguments [ 8 ] . Value ! . ToString ( ) , CultureInfo . InvariantCulture ) ;
69+ var integrationKind = int . Parse ( attribute . ConstructorArguments [ 9 ] . Value ! . ToString ( ) , CultureInfo . InvariantCulture ) ;
6970 var integrationName = attribute . ConstructorArguments [ 7 ] . Value ! . ToString ( ) ;
7071 var targetAssembly = attribute . ConstructorArguments [ 0 ] . Value ! . ToString ( ) ;
7172 var targetType = attribute . ConstructorArguments [ 1 ] . Value ! . ToString ( ) ;
7273 var targetMethod = attribute . ConstructorArguments [ 2 ] . Value ! . ToString ( ) ;
7374
7475 var minVersion = attribute . ConstructorArguments [ 5 ] . Value ? . ToString ( ) . Split ( '.' ) ! ;
7576
76- var targetMinimumMajor = int . Parse ( minVersion [ 0 ] ) ;
77- var targetMinimumMinor = minVersion . Length > 1 && minVersion [ 1 ] != "*" ? int . Parse ( minVersion [ 1 ] ) : ushort . MinValue ;
78- var targetMinimumPatch = minVersion . Length > 2 && minVersion [ 2 ] != "*" ? int . Parse ( minVersion [ 2 ] ) : ushort . MinValue ;
77+ var targetMinimumMajor = int . Parse ( minVersion [ 0 ] , CultureInfo . InvariantCulture ) ;
78+ var targetMinimumMinor = minVersion . Length > 1 && minVersion [ 1 ] != "*" ? int . Parse ( minVersion [ 1 ] , CultureInfo . InvariantCulture ) : ushort . MinValue ;
79+ var targetMinimumPatch = minVersion . Length > 2 && minVersion [ 2 ] != "*" ? int . Parse ( minVersion [ 2 ] , CultureInfo . InvariantCulture ) : ushort . MinValue ;
7980
8081 var maxVersion = attribute . ConstructorArguments [ 6 ] . Value ? . ToString ( ) . Split ( '.' ) ! ;
81- var targetMaximumMajor = int . Parse ( maxVersion [ 0 ] ) ;
82- var targetMaximumMinor = maxVersion . Length > 1 && maxVersion [ 1 ] != "*" ? int . Parse ( maxVersion [ 1 ] ) : ushort . MaxValue ;
83- var targetMaximumPatch = maxVersion . Length > 2 && maxVersion [ 2 ] != "*" ? int . Parse ( maxVersion [ 2 ] ) : ushort . MaxValue ;
82+ var targetMaximumMajor = int . Parse ( maxVersion [ 0 ] , CultureInfo . InvariantCulture ) ;
83+ var targetMaximumMinor = maxVersion . Length > 1 && maxVersion [ 1 ] != "*" ? int . Parse ( maxVersion [ 1 ] , CultureInfo . InvariantCulture ) : ushort . MaxValue ;
84+ var targetMaximumPatch = maxVersion . Length > 2 && maxVersion [ 2 ] != "*" ? int . Parse ( maxVersion [ 2 ] , CultureInfo . InvariantCulture ) : ushort . MaxValue ;
8485
8586 return new TargetToGenerate ( signalType , integrationName , targetAssembly , targetType , targetMethod , targetMinimumMajor , targetMinimumMinor , targetMinimumPatch , targetMaximumMajor , targetMaximumMinor , targetMaximumPatch , targetSignatureTypesBuilder . ToString ( ) , integrationKind ) ;
8687 }
@@ -122,10 +123,7 @@ private static string GenerateInstrumentationDefinitionsPartialClass(
122123 {
123124 byName . Add (
124125 targetToGenerate . IntegrationName ,
125- new List < ( string IntegrationType , TargetToGenerate Target ) >
126- {
127- ( integrationToGenerate . Value . IntegrationType , targetToGenerate )
128- } ) ;
126+ [ ( integrationToGenerate . Value . IntegrationType , targetToGenerate ) ] ) ;
129127 }
130128
131129 instrumentationCount ++ ;
@@ -134,9 +132,7 @@ private static string GenerateInstrumentationDefinitionsPartialClass(
134132
135133 var generatedMethodName = integrationKind == IntegrationKindDirect ? "GetDefinitionsArray" : "GetDerivedDefinitionsArray" ;
136134
137- var sb = new StringBuilder ( )
138- . AppendFormat (
139- @"//------------------------------------------------------------------------------
135+ const string headerTemplate = @"//------------------------------------------------------------------------------
140136// <auto-generated>
141137// This code was generated by the InstrumentationDefinitionsGenerator tool. To safely
142138// modify this file, edit InstrumentMethodAttribute on the classes and
@@ -155,9 +151,9 @@ internal static partial class InstrumentationDefinitions
155151{{
156152 private static NativeCallTargetDefinition[] {0}()
157153 {{
158- var nativeCallTargetDefinitions = new List<NativeCallTargetDefinition>({1});" ,
159- generatedMethodName ,
160- instrumentationCount )
154+ var nativeCallTargetDefinitions = new List<NativeCallTargetDefinition>({1});" ;
155+ var sb = new StringBuilder ( )
156+ . AppendFormat ( CultureInfo . InvariantCulture , headerTemplate , generatedMethodName , instrumentationCount )
161157 . AppendLine ( ) ;
162158
163159 const string tracesHeader = @" // Traces
@@ -211,16 +207,15 @@ private static void GenerateIntegrations(Dictionary<string, List<(string Integra
211207
212208 sb . Append ( " // " ) ;
213209 sb . AppendLine ( group . Key ) ;
214- sb . AppendFormat (
215- @" if ({0}.{1}))
216- {{" ,
217- conditionPrefix ,
218- group . Key ) ;
210+ const string ifTemplate = @" if ({0}.{1}))
211+ {{" ;
212+ sb . AppendFormat ( CultureInfo . InvariantCulture , ifTemplate , conditionPrefix , group . Key ) ;
219213 sb . AppendLine ( ) ;
220214
221215 foreach ( var integration in group . Value )
222216 {
223217 sb . AppendFormat (
218+ CultureInfo . InvariantCulture ,
224219 " nativeCallTargetDefinitions.Add(new(\" {0}\" , \" {1}\" , \" {2}\" , [{3}], {4}, {5}, {6}, {7}, {8}, {9}, AssemblyFullName, \" {10}\" ));" ,
225220 integration . Target . Assembly ,
226221 integration . Target . Type ,
0 commit comments