impact.py
- Pfad:
/var/www/mcp-servers/mcp-code/tools/impact.py - Namespace: -
- Zeilen: 67 | Größe: 2,237 Bytes
- Geändert: 2025-12-28 13:04:10 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Dependencies 1
- use db.execute_query
Funktionen 1
-
register_impact_tool()Zeile 6
Code
"""code_impact - Impact-Analyse bei Klassenaenderung."""
from db import execute_query
def register_impact_tool(mcp):
"""Registriert code_impact Tool."""
@mcp.tool()
def code_impact(fqcn: str) -> dict:
"""
Analysiert den Impact bei Aenderung einer Klasse.
Args:
fqcn: Vollstaendiger Klassenname (z.B. Controller\\HomeController)
Returns:
Dict mit fqcn, direct_dependents, risk_level, affected_namespaces, recommendation
"""
# Dependents laden (gleiche Query wie code_dependents)
sql = """
SELECT ca.id as file_id, ca.file_name, ca.namespace, cd.dependency_type
FROM code_dependencies cd
JOIN code_analysis ca ON cd.analysis_id = ca.id
WHERE cd.target_fqcn = %s
ORDER BY ca.file_name
"""
dependents = execute_query(sql, (fqcn,))
count = len(dependents)
# Risk Level berechnen
if count == 0:
risk_level = "low"
recommendation = "Keine Abhaengigkeiten. Aenderungen sicher."
elif count <= 5:
risk_level = "medium"
recommendation = f"Moderate Abhaengigkeiten ({count}). Aenderungen mit Vorsicht."
elif count <= 15:
risk_level = "high"
recommendation = f"Viele Abhaengigkeiten ({count}). Gruendliche Tests empfohlen."
else:
risk_level = "critical"
recommendation = f"Kritisch viele Abhaengigkeiten ({count}). Breaking Changes vermeiden!"
# Betroffene Namespaces sammeln
affected_namespaces = list(set(
d["namespace"] for d in dependents if d["namespace"]
))
affected_namespaces.sort()
# Dependency-Typen gruppieren
by_type = {}
for d in dependents:
t = d["dependency_type"]
if t not in by_type:
by_type[t] = 0
by_type[t] += 1
return {
"fqcn": fqcn,
"direct_dependents": count,
"risk_level": risk_level,
"affected_namespaces": affected_namespaces,
"dependents_by_type": by_type,
"recommendation": recommendation,
}