scripts/refactor/complexity¶
scripts.refactor.complexity.__init__¶
🧠 Docstring Summary
| Section | Content |
|---|---|
| Description | No module description available. |
| Args | — |
| Returns | — |
scripts.refactor.complexity.complexity_analyzer¶
🧠 Docstring Summary
| Section | Content |
|---|---|
| Description | complexity_analyzer.py |
| This module provides utilities for analyzing the cyclomatic complexity of Python functions, methods, and modules using the AST (Abstract Syntax Tree). | |
| Core features include: | |
| - Computing cyclomatic complexity for each function and method in a Python file, including support for nested classes. | |
| - Summing per-function complexities to produce a module-level complexity score. | |
| - Supporting Python 3.10+ match/case syntax in complexity calculations. | |
| - Providing a ComplexityVisitor class for AST traversal and complexity computation. | |
| - Handling syntax and I/O errors gracefully with warnings. | |
| - Deprecated alias for backward compatibility. | |
| Intended for use in code quality analysis, refactoring tools, and CI pipelines to help maintain manageable code complexity. | |
| Args | — |
| Returns | — |
📦 Classes¶
ComplexityVisitor¶
Visits each top-level function or method definition and computes its cyclomatic complexity based on decision point nodes. Nested functions are entirely skipped; nested classes are recursed into. Parameters: ['self: Any'] Returns: None
🛠️ Functions¶
__init__¶
Initializes the ComplexityVisitor with an empty dictionary for function scores and sets the current class name to an empty string. Parameters: ['self: Any'] Returns: None
visit_ClassDef¶
Visits a class definition node and computes the complexity of its methods. Parameters: ['self: Any', 'node: ast.ClassDef'] Returns: None
visit_FunctionDef¶
Visits a function definition node and calculates its complexity. Parameters: ['self: Any', 'node: ast.FunctionDef'] Returns: None
visit_AsyncFunctionDef¶
Visits an asynchronous function definition node and calculates its complexity. Parameters: ['self: Any', 'node: ast.AsyncFunctionDef'] Returns: None
_compute_and_record¶
Calculate complexity for a function/method node and record it. Parameters: ['self: Any', 'node: ast.AST'] Returns: None
count_nodes¶
Recursively counts the number of decision nodes in the given AST node. Parameters: ['n: ast.AST'] Returns: int
get_scores¶
Return the computed complexity scores. Parameters: ['self: Any'] Returns: Dict[str, int]
calculate_function_complexity_map¶
Parses the given Python file and returns a mapping from function/method full names to their cyclomatic complexity scores. Parameters: ['file_path: str'] Returns: Dict[str, int]
calculate_module_complexity¶
Sum all function/method complexities in the module and add 1 overhead. Parameters: ['module_path: str'] Returns: int
calculate_cyclomatic_complexity_for_module¶
Deprecated alias for calculate_module_complexity. Issues a DeprecationWarning and delegates to calculate_module_complexity. Parameters: ['module_path: str'] Returns: int
scripts.refactor.complexity.complexity_summary¶
🧠 Docstring Summary
| Section | Content |
|---|---|
| Description | complexity_summary.py |
| This module provides functionality for analyzing code complexity from a JSON audit file. | |
| It reads the audit data, checks for complexity thresholds, and prints a summary report | |
| indicating any methods that exceed the specified complexity limits. | |
| Dependencies: | |
| - json | |
| - sys | |
| - os | |
| Args | — |
| Returns | — |
🛠️ Functions¶
analyze_complexity¶
Analyzes code complexity from a JSON audit file and prints a summary. Parameters: file_path (str): Path to the audit JSON file. Defaults to "refactor_audit.json". max_complexity (int): Maximum allowed complexity before issuing warnings. Defaults to 10. Exits the process with an error message if the file is missing, empty, or contains invalid JSON. Parameters: ['file_path: str', 'max_complexity: int'] Returns: None
run_analysis¶
Analyzes method complexity across files and prints a summary report. Parameters: ['data: Dict[str, Any]', 'max_complexity: Union[int, float]', 'use_emoji: bool'] Returns: None