@@ -287,6 +287,10 @@ def _analyze_code_file(self, repo_dir: str, file_info: dict):
287287 self ._analyze_dart_file (file_path , content , repo_dir )
288288 elif language == "go" :
289289 self ._analyze_go_file (file_path , content , repo_dir )
290+ elif language == "zig" :
291+ self ._analyze_zig_file (file_path , content , repo_dir )
292+ elif language == "vue" :
293+ self ._analyze_vue_file (file_path , content , repo_dir )
290294 # else:
291295 # logger.warning(
292296 # f"Unsupported language for call graph analysis: {language} for file {file_path}"
@@ -612,6 +616,54 @@ def _analyze_dart_file(self, file_path: str, content: str, repo_dir: str):
612616 except Exception :
613617 logger .exception (f"Failed to analyze Dart file { file_path } " )
614618
619+ def _analyze_zig_file (self , file_path : str , content : str , repo_dir : str ):
620+ """
621+ Analyze Zig file using tree-sitter based analyzer.
622+
623+ Args:
624+ file_path: Path to the Zig file
625+ content: File content string
626+ repo_dir: Repository base directory
627+ """
628+ from codewiki .src .be .dependency_analyzer .analyzers .zig import analyze_zig_file
629+
630+ try :
631+ functions , relationships = analyze_zig_file (str (file_path ), content , repo_path = repo_dir )
632+
633+ for func in functions :
634+ func_id = func .id if func .id else f"{ file_path } :{ func .name } "
635+ self .functions [func_id ] = func
636+
637+ self .call_relationships .extend (relationships )
638+ except Exception :
639+ logger .exception (f"Failed to analyze Zig file { file_path } " )
640+
641+ def _analyze_vue_file (self , file_path : str , content : str , repo_dir : str ):
642+ """
643+ Analyze a Vue single-file component.
644+
645+ The <script> blocks go through the JavaScript/TypeScript analyzers; the
646+ component itself, its options-API members, and its template usage are
647+ added by the Vue analyzer.
648+
649+ Args:
650+ file_path: Path to the .vue file
651+ content: File content string
652+ repo_dir: Repository base directory
653+ """
654+ from codewiki .src .be .dependency_analyzer .analyzers .vue import analyze_vue_file
655+
656+ try :
657+ functions , relationships = analyze_vue_file (str (file_path ), content , repo_path = repo_dir )
658+
659+ for func in functions :
660+ func_id = func .id if func .id else f"{ file_path } :{ func .name } "
661+ self .functions [func_id ] = func
662+
663+ self .call_relationships .extend (relationships )
664+ except Exception :
665+ logger .exception (f"Failed to analyze Vue file { file_path } " )
666+
615667 def _analyze_go_file (self , file_path : str , content : str , repo_dir : str ):
616668 """
617669 Analyze Go file using tree-sitter based analyzer.
@@ -1094,6 +1146,10 @@ def _generate_visualization_data(self) -> dict:
10941146 node_classes .append ("lang-dart" )
10951147 elif file_ext == ".go" :
10961148 node_classes .append ("lang-go" )
1149+ elif file_ext == ".zig" :
1150+ node_classes .append ("lang-zig" )
1151+ elif file_ext == ".vue" :
1152+ node_classes .append ("lang-vue" )
10971153
10981154 cytoscape_elements .append (
10991155 {
0 commit comments