Skip to content

Commit 16a3073

Browse files
Fixed AspectClass merging
1 parent 253f02a commit 16a3073

File tree

2 files changed

+38
-31
lines changed

2 files changed

+38
-31
lines changed

tracer/build/_build/CodeGenerators/CallSitesGenerator.cs

+14-22
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ internal static void RetrieveCallSites(Dictionary<string, AspectClass> aspectCla
4848
continue;
4949
}
5050

51-
var aspectClassLine = GetAspectLine(aspectClassAttribute, out var category);
51+
var aspectClassLine = $"{GetAspectLine(aspectClassAttribute, out var category)} {aspectClassType.FullName}";
5252
if (!aspectClasses.TryGetValue(aspectClassLine, out var aspectClass))
5353
{
54-
aspectClass = new AspectClass(aspectClassType, aspectClassAttribute);
54+
aspectClass = new AspectClass();
5555
aspectClass.Categories |= category;
5656
aspectClasses[aspectClassLine] = aspectClass;
5757
}
@@ -61,10 +61,10 @@ internal static void RetrieveCallSites(Dictionary<string, AspectClass> aspectCla
6161
{
6262
foreach(var aspectAttribute in method.CustomAttributes.Where(IsAspect))
6363
{
64-
var aspectLine = GetAspectLine(aspectAttribute, out _);
64+
var aspectLine = $"{GetAspectLine(aspectAttribute, out _)} {GetMethodName(method)}";
6565
if (!aspectClass.Aspects.TryGetValue(aspectLine, out var aspect))
6666
{
67-
aspect = new Aspect(method, aspectAttribute);
67+
aspect = new Aspect();
6868
}
6969

7070
aspect.Tfms |= tfmCategory;
@@ -73,6 +73,12 @@ internal static void RetrieveCallSites(Dictionary<string, AspectClass> aspectCla
7373
}
7474
}
7575

76+
string GetMethodName(MethodDefinition method)
77+
{
78+
var fullName = method.FullName;
79+
return fullName.Substring(fullName.IndexOf("::") + 2).Replace("<T>", "<!!0>");
80+
}
81+
7682
bool IsAspectClass(Mono.Cecil.CustomAttribute attribute)
7783
{
7884
return attribute.AttributeType.FullName.StartsWith("Datadog.Trace.Iast.Dataflow.AspectClass");
@@ -278,40 +284,26 @@ internal static TargetFrameworks GetCategory(TargetFramework tfm)
278284

279285
internal struct AspectClass
280286
{
281-
public AspectClass(TypeDefinition aspectClassType, CustomAttribute aspectClassAttribute)
282-
{
283-
AspectClassType = aspectClassType;
284-
AspectClassAttribute = aspectClassAttribute;
285-
}
287+
public AspectClass() {}
286288

287-
public TypeDefinition AspectClassType;
288-
public CustomAttribute AspectClassAttribute;
289289
public Dictionary<string, Aspect> Aspects = new Dictionary<string, Aspect>();
290290
public InstrumentationCategory Categories = InstrumentationCategory.Iast;
291291

292292
public string Subfix()
293293
{
294-
return $" {AspectClassType.FullName} {((long)Categories).ToString()}";
294+
return $" {((long)Categories).ToString()}";
295295
}
296296
}
297297

298298
internal struct Aspect
299299
{
300-
public Aspect(MethodDefinition aspectMethod, CustomAttribute aspectAttribute)
301-
{
302-
AspectMethod = aspectMethod;
303-
AspectAttribute = aspectAttribute;
304-
}
300+
public Aspect() { }
305301

306-
public MethodDefinition AspectMethod;
307-
public CustomAttribute AspectAttribute;
308302
public TargetFrameworks Tfms = TargetFrameworks.None;
309303

310304
public string Subfix()
311305
{
312-
var fullName = AspectMethod.FullName;
313-
var methodName = fullName.Substring(fullName.IndexOf("::") + 2).Replace("<T>", "<!!0>");
314-
return $" {methodName} {((long)Tfms).ToString()}";
306+
return $" {((long)Tfms).ToString()}";
315307
}
316308
}
317309
}

0 commit comments

Comments
 (0)