MCPcopy Index your code
hub / github.com/tirth8205/code-review-graph / refactor_func

Function refactor_func

code_review_graph/tools/refactor_tools.py:23–125  ·  view source on GitHub ↗

Unified refactoring entry point. [REFACTOR] Supports three modes: - ``rename``: Preview renaming a symbol (requires *old_name* and *new_name*). - ``dead_code``: Find unreferenced functions/classes. - ``suggest``: Get community-driven refactoring suggestions. Args:

(
    mode: str = "rename",
    old_name: str | None = None,
    new_name: str | None = None,
    kind: str | None = None,
    file_pattern: str | None = None,
    repo_root: str | None = None,
)

Source from the content-addressed store, hash-verified

21
22
23def refactor_func(
24 mode: str = "rename",
25 old_name: str | None = None,
26 new_name: str | None = None,
27 kind: str | None = None,
28 file_pattern: str | None = None,
29 repo_root: str | None = None,
30) -> dict[str, Any]:
31 """Unified refactoring entry point.
32
33 [REFACTOR] Supports three modes:
34 - ``rename``: Preview renaming a symbol (requires *old_name* and
35 *new_name*).
36 - ``dead_code``: Find unreferenced functions/classes.
37 - ``suggest``: Get community-driven refactoring suggestions.
38
39 Args:
40 mode: One of ``"rename"``, ``"dead_code"``, or ``"suggest"``.
41 old_name: (rename mode) Current symbol name.
42 new_name: (rename mode) Desired new name.
43 kind: (dead_code mode) Optional node kind filter.
44 file_pattern: (dead_code mode) Optional file path substring filter.
45 repo_root: Repository root path. Auto-detected if omitted.
46
47 Returns:
48 Mode-specific results dict.
49 """
50 valid_modes = {"rename", "dead_code", "suggest"}
51 if mode not in valid_modes:
52 return {
53 "status": "error",
54 "error": (
55 f"Invalid mode '{mode}'. "
56 f"Must be one of: {', '.join(sorted(valid_modes))}"
57 ),
58 }
59
60 store, root = _get_store(repo_root)
61 try:
62 if mode == "rename":
63 if not old_name or not new_name:
64 return {
65 "status": "error",
66 "error": (
67 "rename mode requires both old_name and new_name."
68 ),
69 }
70 preview = rename_preview(store, old_name, new_name)
71 if preview is None:
72 return {
73 "status": "not_found",
74 "summary": f"No node found matching '{old_name}'.",
75 }
76 result = {
77 "status": "ok",
78 "summary": (
79 f"Rename preview: {old_name} -> {new_name}, "
80 f"{len(preview['edits'])} edit(s). "

Callers 1

refactor_toolFunction · 0.85

Calls 7

_get_storeFunction · 0.85
rename_previewFunction · 0.85
generate_hintsFunction · 0.85
get_sessionFunction · 0.85
find_dead_codeFunction · 0.85
suggest_refactoringsFunction · 0.85
closeMethod · 0.45

Tested by

no test coverage detected