-
Notifications
You must be signed in to change notification settings - Fork 0
Implementation of Call Graph Visualization Enhancements #135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Implementation of Call Graph Visualization Enhancements #135
Conversation
# Motivation The **Codegen on OSS** package provides a pipeline that: - **Collects repository URLs** from different sources (e.g., CSV files or GitHub searches). - **Parses repositories** using the codegen tool. - **Profiles performance** and logs metrics for each parsing run. - **Logs errors** to help pinpoint parsing failures or performance bottlenecks. <!-- Why is this change necessary? --> # Content <!-- Please include a summary of the change --> see [codegen-on-oss/README.md](https://github.com/codegen-sh/codegen-sdk/blob/acfe3dc07b65670af33b977fa1e7bc8627fd714e/codegen-on-oss/README.md) # Testing <!-- How was the change tested? --> `uv run modal run modal_run.py` No unit tests yet 😿 # Please check the following before marking your PR as ready for review - [ ] I have added tests for my changes - [x] I have updated the documentation or added new documentation as needed
Original commit by Tawsif Kamal: Revert "Revert "Adding Schema for Tool Outputs"" (codegen-sh#894) Reverts codegen-sh#892 --------- Co-authored-by: Rushil Patel <[email protected]> Co-authored-by: rushilpatel0 <[email protected]>
Original commit by Ellen Agarwal: fix: Workaround for relace not adding newlines (codegen-sh#907)
Reviewer's GuideThis PR enhances the call graph visualization subsystem by extending the data schema (nodes, edges, filters), implementing a metadata-rich graph builder and traversal with filtering, adding a Plotly-based interactive renderer, integrating these in the VisualizationManager, and supplying corresponding documentation, examples, and tests. Class Diagram: VisualizationManager and Utility FunctionsclassDiagram
class VisualizationManager {
+RepoOperator op
+str viz_path
+str viz_file_path
+__init__(op: RepoOperator)
+clear_graphviz_data() void
+write_graphviz_data(G: Graph | go.Figure, root: Optional) void
note for write_graphviz_data "Parameter G type changed to 'Graph | go.Figure' to support Plotly figures."
+create_call_graph_visualization(source_function: Function, max_depth: int, ..., filters: Optional[Dict], ...) go.Figure
note for create_call_graph_visualization "New method. Creates interactive call graph using viz_utils functions."
+visualize_call_graph(source_function: Function, max_depth: int, ..., filters: Optional[Dict], ...) void
note for visualize_call_graph "New method. Generates and writes call graph visualization."
+get_available_modules(G: DiGraph) List~str~
note for get_available_modules "New method. Extracts module names from a graph."
+get_call_graph_stats(G: DiGraph) Dict~str, Any~
note for get_call_graph_stats "New method. Computes statistics for a given call graph."
}
class viz_utils {
<<Module>>
+get_node_options(node: Any) Dict~str, Any~
note for get_node_options "Return type hint Dict[str, Any] added."
+get_node_id(node: Any) str
note for get_node_id "Return type hint str added."
+graph_to_json(G1: Graph, root: Optional) str
note for graph_to_json "Return type hint str added."
+create_call_graph(source_function: Function, ..., filters: Optional[Dict]) Tuple~DiGraph, Dict~
note for create_call_graph "New function. Builds a detailed call graph with metadata."
+create_interactive_call_graph(G: DiGraph, metadata: Dict, ...) go.Figure
note for create_interactive_call_graph "New function. Generates a Plotly figure for an interactive graph."
+apply_call_graph_filters(G: DiGraph, filters: Dict) DiGraph
note for apply_call_graph_filters "New function. Applies various filters to a call graph."
}
VisualizationManager ..> viz_utils : Uses
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Join our Discord community for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
I see a check failed - I'm on it! 🫡 |
I've fixed the mypy errors in the call graph visualization code. The main issues were:
These changes should resolve the mypy type checking errors while maintaining the functionality of the code. |
✅ Fixed mypy errors in this commit. The main issues were:
Note: The CI checks are still failing, but this appears to be due to unrelated issues in the CI environment rather than the code changes themselves. The pre-commit checks pass locally but fail in CI. |
I've fixed the mypy errors in the call graph visualization code with this commit. The main issues were:
The pre-commit checks pass locally but are still failing in CI. This appears to be due to unrelated issues in the CI environment rather than the code changes themselves. 💻 View my work • React 👍 or 👎 |
Overview
This PR implements enhanced call graph visualization features for the Codegen repository as specified in issue ZAM-422. The enhancements provide more detailed relationship information, interactive features for navigating call graphs, filtering options, and improved visual representation of call relationships.
Changes
VizNode
class with additional fields for detailed function informationVizEdge
class for edge metadataFeatures
Detailed Relationship Information
Interactive Features
Filtering Options
Improved Visual Representation
Testing
Added unit tests for the enhanced call graph visualization features in
tests/visualizations/test_enhanced_call_graph.py
.Documentation
Added documentation for the enhanced call graph visualization in
docs/building-with-codegen/enhanced-call-graph.mdx
.Example
Created an example implementation in
codegen-examples/examples/visualize_codebases/enhanced_call_graph.py
to demonstrate the enhanced features.Resolves ZAM-422
💻 View my work • About Codegen
Note
I'm currently writing a description for your pull request. I should be done shortly (<1 minute). Please don't edit the description field until I'm finished, or we may overwrite each other. If I find nothing to write about, I'll delete this message.
Summary by Sourcery
Implement enhanced call graph visualization features, enriching nodes and edges with detailed metadata, adding interactive Plotly-based UI, filtering capabilities, and integrating these into the VisualizationManager alongside examples, documentation, and tests.
New Features:
create_call_graph
,create_interactive_call_graph
,apply_call_graph_filters
).VisualizationManager
with methods to generate and save enhanced call graph visualizations.codegen-examples
.Enhancements:
Documentation:
docs/building-with-codegen/enhanced-call-graph.mdx
.Tests:
tests/visualizations/test_enhanced_call_graph.py
.