1111import tree_sitter_javascript as tsjavascript
1212from tree_sitter import Language , Parser
1313
14+ from services .observability import logger , capture_exception , track_time , metrics
15+
1416
1517class DependencyAnalyzer :
1618 """Analyze code dependencies and build dependency graph"""
@@ -22,7 +24,7 @@ def __init__(self):
2224 'javascript' : Parser (Language (tsjavascript .language ())),
2325 'typescript' : Parser (Language (tsjavascript .language ())),
2426 }
25- print ( "✅ DependencyAnalyzer initialized! " )
27+ logger . info ( " DependencyAnalyzer initialized" )
2628
2729 def _detect_language (self , file_path : str ) -> str :
2830 """Detect language from file extension"""
@@ -117,7 +119,7 @@ def analyze_file_dependencies(self, file_path: str) -> Dict:
117119 }
118120
119121 except Exception as e :
120- print ( f "Error analyzing { file_path } : { e } " )
122+ logger . error ( "Error analyzing file" , file_path = file_path , error = str ( e ) )
121123 return {"file" : str (file_path ), "imports" : [], "language" : language , "error" : str (e )}
122124
123125 def build_dependency_graph (self , repo_path : str ) -> Dict :
@@ -137,7 +139,7 @@ def build_dependency_graph(self, repo_path: str) -> Dict:
137139 if file_path .suffix in extensions :
138140 code_files .append (file_path )
139141
140- print ( f"📊 Building dependency graph for { len (code_files )} files..." )
142+ logger . info ( " Building dependency graph" , file_count = len (code_files ))
141143
142144 # Analyze each file
143145 file_dependencies = {}
@@ -157,12 +159,12 @@ def build_dependency_graph(self, repo_path: str) -> Dict:
157159
158160 # DEBUG: Show sample of what we're working with
159161 sample_files = list (internal_files )[:3 ]
160- print ( f"📁 Sample internal files: { sample_files } " )
162+ logger . debug ( " Sample internal files" , sample = sample_files )
161163
162164 # Find a file with imports to debug
163165 for f , imports in list (file_dependencies .items ())[:5 ]:
164166 if imports :
165- print ( f"📄 { f } imports: { imports [:3 ]} " )
167+ logger . debug ( "Sample file imports" , file = f , imports = imports [:3 ])
166168 break
167169
168170 # Create nodes
@@ -198,12 +200,13 @@ def build_dependency_graph(self, repo_path: str) -> Dict:
198200 else :
199201 failed_count += 1
200202
201- print ( f"🔗 Resolved { resolved_count } internal imports, { failed_count } external" )
203+ logger . info ( "Import resolution complete" , resolved = resolved_count , external = failed_count )
202204
203205 # Calculate metrics
204206 graph_metrics = self ._calculate_graph_metrics (file_dependencies , edges )
205207
206- print (f"✅ Graph built: { len (nodes )} nodes, { len (edges )} edges" )
208+ logger .info ("Dependency graph built" , nodes = len (nodes ), edges = len (edges ))
209+ metrics .increment ("dependency_graphs_built" )
207210
208211 return {
209212 "nodes" : nodes ,
@@ -440,7 +443,7 @@ def save_to_cache(self, repo_id: str, graph_data: Dict):
440443 db .clear_file_dependencies (repo_id )
441444
442445 # Bulk insert new dependencies
443- print ( f"💾 Saving { len ( file_deps ) } file dependencies to Supabase" )
446+ logger . info ( " Saving file dependencies to Supabase", repo_id = repo_id , count = len ( file_deps ) )
444447 db .upsert_file_dependencies (repo_id , file_deps )
445448
446449 # Save repository insights
@@ -457,7 +460,7 @@ def save_to_cache(self, repo_id: str, graph_data: Dict):
457460 }
458461
459462 db .upsert_repository_insights (repo_id , insights )
460- print ( f"✅ Cached dependency graph for { repo_id } in Supabase" )
463+ logger . info ( " Cached dependency graph in Supabase", repo_id = repo_id )
461464
462465 def load_from_cache (self , repo_id : str ) -> Dict :
463466 """Load dependency graph from Supabase cache"""
@@ -467,7 +470,7 @@ def load_from_cache(self, repo_id: str) -> Dict:
467470
468471 # Get file dependencies
469472 file_deps = db .get_file_dependencies (repo_id )
470- print ( f"🔍 Loading cache for { repo_id } : found { len (file_deps ) if file_deps else 0 } file dependencies" )
473+ logger . debug ( " Loading cache" , repo_id = repo_id , found = len (file_deps ) if file_deps else 0 )
471474
472475 if not file_deps :
473476 return None
@@ -492,7 +495,7 @@ def load_from_cache(self, repo_id: str) -> Dict:
492495 "total_edges" : len (edges )
493496 }
494497
495- print ( f"✅ Loaded cached dependency graph for { repo_id } from Supabase" )
498+ logger . info ( " Loaded cached dependency graph" , repo_id = repo_id )
496499
497500 return {
498501 "dependencies" : dependencies ,
0 commit comments