Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions codegen-on-oss/codegen_on_oss/analyzers/analyzer.py
Original file line number Diff line number Diff line change
Expand Up @@ -480,8 +480,8 @@ def analyze(
Dictionary containing analysis results
"""
if not self.base_codebase:
raise ValueError("Base codebase is missing")
raise ValueError("Base codebase is missing") # noqa: TRY003

# Convert string analysis types to enums
if analysis_types:
analysis_types = [
Expand Down Expand Up @@ -693,7 +693,7 @@ def generate_report(self, report_type: str = "summary") -> str:
Report as a string
"""
if not self.results:
raise ValueError("No analysis results available")
raise ValueError("No analysis results available") # noqa: TRY003

if report_type == "summary":
return self._generate_summary_report()
Expand All @@ -702,7 +702,7 @@ def generate_report(self, report_type: str = "summary") -> str:
elif report_type == "issues":
return self._generate_issues_report()
else:
raise ValueError(f"Unknown report type: {report_type}")
raise ValueError(f"Unknown report type: {report_type}") # noqa: TRY003

def _generate_summary_report(self) -> str:
"""Generate a summary report."""
Expand Down Expand Up @@ -1000,8 +1000,8 @@ def main():
report = manager.generate_report(args.report_type)
print(report)

except Exception as e:
logger.exception(f"Error: {e}")
except Exception:
logger.exception("Error occurred") # Fixed TRY401 error
import traceback

traceback.print_exc()
Expand Down
118 changes: 118 additions & 0 deletions codegen-on-oss/codegen_on_oss/analyzers/visualization/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# Code Visualization Tools

This directory contains tools for visualizing various aspects of codebases, including:

- Code structure (call graphs, dependency graphs, etc.)
- Code quality (dead code, complexity, etc.)
- Analysis results (issues, PR comparisons, etc.)

## Visualization Types

### Call Graph Visualizations

1. **Basic Call Graph**: Visualize function calls starting from a specific function
```python
visualizer.visualize_call_graph(function_name="main", max_depth=3)
```

2. **Call Graph From Node**: Enhanced call graph visualization with more detailed tracing
```python
visualizer.visualize_call_graph_from_node(
function_name="main",
max_depth=3,
graph_external_modules=False
)
```

3. **Filtered Call Graph**: Visualize call graph with filtering by method names
```python
visualizer.visualize_call_graph_filter(
class_name="MyClass",
method_filters=["get", "post", "patch", "delete"],
skip_test_files=True
)
```

4. **Call Paths Between Nodes**: Visualize all paths between two functions
```python
visualizer.visualize_call_paths_between_nodes(
start_func_name="start_func",
end_func_name="end_func"
)
```

### Code Quality Visualizations

1. **Dead Code**: Visualize unused code in the codebase
```python
visualizer.visualize_dead_code(path_filter="src/")
```

2. **Dead Code Graph**: Enhanced dead code visualization with dependency tracking
```python
visualizer.visualize_dead_code_graph(
skip_test_files=True,
skip_decorated=True
)
```

3. **Cyclomatic Complexity**: Visualize code complexity
```python
visualizer.visualize_cyclomatic_complexity(path_filter="src/")
```

### Other Visualizations

1. **Dependency Graph**: Visualize dependencies between symbols
```python
visualizer.visualize_dependency_graph(symbol_name="MyClass")
```

2. **Blast Radius**: Visualize the impact of changing a symbol
```python
visualizer.visualize_blast_radius(symbol_name="important_function")
```

3. **Class Methods**: Visualize methods in a class and their relationships
```python
visualizer.visualize_class_methods(class_name="MyClass")
```

4. **Module Dependencies**: Visualize dependencies between modules
```python
visualizer.visualize_module_dependencies(module_path="src/module/")
```

5. **Issues Heatmap**: Visualize issues in the codebase
```python
visualizer.visualize_issues_heatmap(severity="error")
```

6. **PR Comparison**: Visualize changes in a pull request
```python
visualizer.visualize_pr_comparison()
```

## Configuration

You can configure the visualization output format, colors, and other options:

```python
from codegen_on_oss.analyzers.visualization.visualizer import VisualizationConfig, OutputFormat

config = VisualizationConfig(
output_format=OutputFormat.PNG, # Options: JSON, PNG, SVG, HTML, DOT
output_directory="visualization_output",
max_depth=5,
ignore_external=True,
ignore_tests=True,
layout_algorithm="spring", # Options: spring, kamada_kawai, spectral
)

visualizer = CodebaseVisualizer(config=config)
```

## Examples

See the `examples/visualization_examples.py` file for complete examples of using these visualization tools.

Loading
Loading