From 3f7224a5fb408d14f6f69a051f92f71de473782a Mon Sep 17 00:00:00 2001 From: "flamingo[bot]" <277372822+flamingo[bot]@users.noreply.github.com> Date: Wed, 23 Sep 2026 03:20:45 +0000 Subject: [PATCH 1/2] fix(CODEWIKI-005-2): 2 review findings across 2 files --- .../be/dependency_analyzer/analyzers/php.py | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/codewiki/src/be/dependency_analyzer/analyzers/php.py b/codewiki/src/be/dependency_analyzer/analyzers/php.py index 7d48e256..52c8a00e 100644 --- a/codewiki/src/be/dependency_analyzer/analyzers/php.py +++ b/codewiki/src/be/dependency_analyzer/analyzers/php.py @@ -161,6 +161,15 @@ def _get_component_id(self, name: str, parent_class: str = None) -> str: return f"{module_path}::{parent_class}.{name}" return f"{module_path}::{name}" + def _get_component_id_for_resolved_name(self, resolved_name: str) -> str: + """Generate a component ID for an already-resolved fully qualified name, + splitting into module path and component name and joining with '::'.""" + dotted = resolved_name.replace("\\", ".") + if "." in dotted: + module_path, name = dotted.rsplit(".", 1) + return f"{module_path}::{name}" + return f"{dotted}::{dotted}" + def _analyze(self): """Parse and analyze the PHP file.""" try: @@ -359,7 +368,7 @@ def _extract_relationships(self, node, depth: int = 0): resolved_base = self.namespace_resolver.resolve(base_name) self.call_relationships.append(CallRelationship( caller=self._get_component_id(class_name), - callee=resolved_base.replace("\\", "."), + callee=self._get_component_id_for_resolved_name(resolved_base), call_line=node.start_point[0] + 1, is_resolved=False )) @@ -376,7 +385,7 @@ def _extract_relationships(self, node, depth: int = 0): resolved_interface = self.namespace_resolver.resolve(interface_name) self.call_relationships.append(CallRelationship( caller=self._get_component_id(implementer_name), - callee=resolved_interface.replace("\\", "."), + callee=self._get_component_id_for_resolved_name(resolved_interface), call_line=node.start_point[0] + 1, is_resolved=False )) @@ -392,7 +401,7 @@ def _extract_relationships(self, node, depth: int = 0): resolved_type = self.namespace_resolver.resolve(created_type) self.call_relationships.append(CallRelationship( caller=self._get_component_id(containing_class), - callee=resolved_type.replace("\\", "."), + callee=self._get_component_id_for_resolved_name(resolved_type), call_line=node.start_point[0] + 1, is_resolved=False )) @@ -408,7 +417,7 @@ def _extract_relationships(self, node, depth: int = 0): resolved_target = self.namespace_resolver.resolve(target_class) self.call_relationships.append(CallRelationship( caller=self._get_component_id(containing_class), - callee=resolved_target.replace("\\", "."), + callee=self._get_component_id_for_resolved_name(resolved_target), call_line=node.start_point[0] + 1, is_resolved=False )) @@ -424,7 +433,7 @@ def _extract_relationships(self, node, depth: int = 0): resolved_type = self.namespace_resolver.resolve(type_name) self.call_relationships.append(CallRelationship( caller=self._get_component_id(containing_class), - callee=resolved_type.replace("\\", "."), + callee=self._get_component_id_for_resolved_name(resolved_type), call_line=node.start_point[0] + 1, is_resolved=False )) @@ -604,3 +613,4 @@ def analyze_php_file(file_path: str, content: str, repo_path: str = None) -> Tup """ analyzer = TreeSitterPHPAnalyzer(file_path, content, repo_path) return analyzer.nodes, analyzer.call_relationships + From 288779041540ae086835f720dcc2d409af177f73 Mon Sep 17 00:00:00 2001 From: "flamingo[bot]" <277372822+flamingo[bot]@users.noreply.github.com> Date: Wed, 23 Sep 2026 03:20:46 +0000 Subject: [PATCH 2/2] fix(CODEWIKI-005-2): 2 review findings across 2 files --- codewiki/src/be/dependency_analyzer/analyzers/javascript.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/codewiki/src/be/dependency_analyzer/analyzers/javascript.py b/codewiki/src/be/dependency_analyzer/analyzers/javascript.py index 3210d869..11cc5304 100644 --- a/codewiki/src/be/dependency_analyzer/analyzers/javascript.py +++ b/codewiki/src/be/dependency_analyzer/analyzers/javascript.py @@ -178,7 +178,7 @@ def _extract_methods_from_class(self, class_node, class_name: str) -> None: if child.type == "method_definition": method_name = self._get_method_name(child) if method_name: - method_key = f"{self._get_module_path()}.{class_name}.{method_name}" + method_key = self._get_component_id(method_name, class_name, is_method=True) method_node = self._create_method_node(child, method_name, class_name) if method_node: self.top_level_nodes[method_key] = method_node @@ -186,7 +186,7 @@ def _extract_methods_from_class(self, class_node, class_name: str) -> None: # Handle arrow function properties field_name = self._get_field_name(child) if field_name and self._is_arrow_function_field(child): - method_key = f"{self._get_module_path()}.{class_name}.{field_name}" + method_key = self._get_component_id(field_name, class_name, is_method=True) method_node = self._create_method_node(child, field_name, class_name) if method_node: self.top_level_nodes[method_key] = method_node @@ -519,7 +519,7 @@ def _extract_call_from_node(self, node, caller_name: str) -> Optional[CallRelati break if current_class: - method_key = f"{self._get_module_path()}.{current_class}.{callee_name}" + method_key = self._get_component_id(callee_name, current_class, is_method=True) if method_key in self.top_level_nodes: return None