class_info.py
- Pfad:
/var/www/mcp-servers/mcp-code/tools/class_info.py - Namespace: -
- Zeilen: 94 | Größe: 3,041 Bytes
- Geändert: 2025-12-28 13:03:49 | 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 3
- use json
- use db.execute_query
- use db.execute_single
Funktionen 1
-
register_class_tool()Zeile 8
Code
"""code_class - Holt Klassen-Details per FQCN."""
import json
from db import execute_query, execute_single
def register_class_tool(mcp):
"""Registriert code_class Tool."""
@mcp.tool()
def code_class(fqcn: str) -> dict:
"""
Holt Klassen-Details per FQCN (Fully Qualified Class Name).
Args:
fqcn: Vollstaendiger Klassenname (z.B. Controller\\HomeController)
Returns:
Dict mit fqcn, type, file_path, namespace, methods,
dependencies, dependents_count
"""
# FQCN in Namespace und Klassennamen aufteilen
parts = fqcn.rsplit("\\", 1)
if len(parts) == 2:
namespace, class_name = parts
else:
namespace = None
class_name = fqcn
# Klasse finden - SQL aus PHP CodeAnalysisRepository::findById()
if namespace:
sql = """
SELECT id, file_path, file_name, namespace, classes, functions
FROM code_analysis
WHERE namespace = %s AND classes LIKE %s
LIMIT 1
"""
params = (namespace, f'%"{class_name}"%')
else:
sql = """
SELECT id, file_path, file_name, namespace, classes, functions
FROM code_analysis
WHERE namespace IS NULL AND classes LIKE %s
LIMIT 1
"""
params = (f'%"{class_name}"%',)
row = execute_single(sql, params)
if not row:
return {"error": f"Klasse nicht gefunden: {fqcn}"}
classes = json.loads(row["classes"] or "[]")
functions = json.loads(row["functions"] or "[]")
# Die richtige Klasse finden (falls mehrere in einer Datei)
class_info = None
for cls in classes:
if cls["name"] == class_name:
class_info = cls
break
if not class_info:
return {"error": f"Klasse nicht in Datei gefunden: {class_name}"}
# Dependencies laden - SQL aus PHP CodeAnalysisRepository::getDependencies()
dep_sql = """
SELECT dependency_type, target_fqcn
FROM code_dependencies
WHERE analysis_id = %s
ORDER BY dependency_type, target_fqcn
"""
dependencies = execute_query(dep_sql, (row["id"],))
# Dependents zaehlen
dep_count_sql = """
SELECT COUNT(*) as cnt FROM code_dependencies WHERE target_fqcn = %s
"""
count_row = execute_single(dep_count_sql, (fqcn,))
dependents_count = count_row["cnt"] if count_row else 0
return {
"fqcn": fqcn,
"type": class_info.get("type", "class"),
"file_id": row["id"],
"file_path": row["file_path"],
"file_name": row["file_name"],
"namespace": row["namespace"],
"methods": functions,
"dependencies": dependencies,
"dependents_count": dependents_count,
}