MCPcopy Index your code
hub / github.com/FSoft-AI4Code/CodeWiki / concise_node

Function concise_node

codewiki/src/be/dependency_analyzer/topo_sort.py:295–334  ·  view source on GitHub ↗
(leaf_nodes: Set[str])

Source from the content-addressed store, hash-verified

293
294
295 def concise_node(leaf_nodes: Set[str]) -> Set[str]:
296 concise_leaf_nodes = set()
297 for node in leaf_nodes:
298 if node.endswith("__init__"):
299 # replace by class name
300 concise_leaf_nodes.add(node.replace(".__init__", ""))
301 else:
302 concise_leaf_nodes.add(node)
303
304 keep_leaf_nodes = []
305
306 # Determine if we should include functions based on available component types
307 # For C-based projects, we need to include functions since they don't have classes
308 available_types = set()
309 for comp in components.values():
310 available_types.add(comp.component_type)
311
312 # Valid types for leaf nodes - include functions for C-based codebases
313 valid_types = {"class", "interface", "struct"}
314 # If no classes/interfaces/structs are found, include functions
315 if not available_types.intersection(valid_types):
316 valid_types.add("function")
317
318 for leaf_node in leaf_nodes:
319 # Skip any leaf nodes that are clearly error strings or invalid identifiers
320 if not isinstance(leaf_node, str) or leaf_node.strip() == "" or any(err_keyword in leaf_node.lower() for err_keyword in ['error', 'exception', 'failed', 'invalid']):
321 logger.debug(f"Skipping invalid leaf node identifier: '{leaf_node}'")
322 continue
323
324 if leaf_node in components:
325 if components[leaf_node].component_type in valid_types:
326 keep_leaf_nodes.append(leaf_node)
327 else:
328 # logger.debug(f"Leaf node {leaf_node} is a {components[leaf_node].component_type}, removing it")
329 pass
330 else:
331 # logger.debug(f"Leaf node {leaf_node} not found in components, removing it")
332 pass
333
334 return keep_leaf_nodes
335
336 concise_leaf_nodes = concise_node(leaf_nodes)
337 if len(concise_leaf_nodes) >= 400:

Callers 1

get_leaf_nodesFunction · 0.85

Calls 2

addMethod · 0.80
debugMethod · 0.80

Tested by

no test coverage detected