@@ -57,8 +57,57 @@ private void AnalyzeDependencies(Solution solution)
57
57
58
58
++ loop ;
59
59
}
60
+
61
+ // Analyze global statements for each assembly
62
+ AnalyzeGlobalStatementsForAssembly ( solution ) ;
60
63
}
61
64
65
+
66
+ private void AnalyzeGlobalStatementsForAssembly ( Solution solution )
67
+ {
68
+ foreach ( var statement in _globalStatementsByAssembly )
69
+ {
70
+ var assemblySymbol = statement . Key ;
71
+ var globalStatements = statement . Value ;
72
+ if ( globalStatements . Count == 0 )
73
+ {
74
+ continue ;
75
+ }
76
+
77
+ // Find the existing assembly element
78
+ var symbolKey = GetSymbolKey ( assemblySymbol ) ;
79
+ var assemblyElement = _symbolKeyToElementMap [ symbolKey ] ;
80
+
81
+ // Create a dummy class for this assembly's global statements
82
+ var dummyClassId = Guid . NewGuid ( ) . ToString ( ) ;
83
+ var dummyClassName = "GlobalStatements" ;
84
+ var dummyClassFullName = BuildSymbolName ( assemblySymbol ) + "." + dummyClassName ;
85
+ var dummyClass = new CodeElement ( dummyClassId , CodeElementType . Class , dummyClassName , dummyClassFullName ,
86
+ assemblyElement ) ;
87
+ _codeGraph . Nodes [ dummyClassId ] = dummyClass ;
88
+ assemblyElement . Children . Add ( dummyClass ) ;
89
+
90
+ // Create a dummy method to contain global statements
91
+ var dummyMethodId = Guid . NewGuid ( ) . ToString ( ) ;
92
+ var dummyMethodName = "Execute" ;
93
+ var dummyMethodFullName = $ "{ dummyClassName } .{ dummyMethodName } ";
94
+ var dummyMethod = new CodeElement ( dummyMethodId , CodeElementType . Method , dummyMethodName ,
95
+ dummyMethodFullName , dummyClass ) ;
96
+ _codeGraph . Nodes [ dummyMethodId ] = dummyMethod ;
97
+ dummyClass . Children . Add ( dummyMethod ) ;
98
+
99
+ // Analyze global statements within the context of the dummy method
100
+ foreach ( var globalStatement in globalStatements )
101
+ {
102
+ var document = solution . GetDocument ( globalStatement . SyntaxTree ) ;
103
+ var semanticModel = document ? . GetSemanticModelAsync ( ) . Result ;
104
+ if ( semanticModel != null )
105
+ {
106
+ AnalyzeMethodBody ( dummyMethod , globalStatement , semanticModel ) ;
107
+ }
108
+ }
109
+ }
110
+ }
62
111
private void AnalyzeAttributeDependencies ( CodeElement element , ISymbol symbol )
63
112
{
64
113
foreach ( var attributeData in symbol . GetAttributes ( ) )
0 commit comments