Code Komplexitaets Analyzer

Analysiert zyklomatische und kognitive Komplexitaet, Verschachtelung und Duplikate

Heuristische Codequalitaetsanalyse fuer JavaScript, TypeScript, Python, Java und Go.

Beispielergebnisse

2 Beispiele

Eine verzweigte JavaScript-Funktion analysieren

Misst zyklomatische und kognitive Komplexitaet einer verschachtelten Preisfunktion mit strengen Schwellen.

{
  "summary": {
    "language": "javascript",
    "functionCount": 1,
    "averageCyclomaticComplexity": 5,
    "averageCognitiveComplexity": 4,
    "hotspotCount": 0,
    "longFunctionCount": 0,
    "deepNestingCount": 1,
    "duplicateClusters": 0
  },
  "functions": [
    {
      "name": "score",
      "cyclomaticComplexity": 5,
      "deepNesting": true
    }
  ]
}
Eingabeparameter anzeigen
{ "sourceCode": "function score(order) {\n if (!order) return 0;\n let total = 0;\n for (const item of order.items) {\n if (item.discount) {\n total += item.price * 0.8;\n } else if (item.vip) {\n total += item.price * 0.9;\n } else {\n total += item.price;\n }\n }\n return total;\n}", "language": "javascript", "longFunctionThreshold": 8, "nestingThreshold": 2, "duplicateWindow": 4 }

Doppelte Normalisierungslogik in Python finden

Erkennt wiederholte Helper-Funktionen und bestaetigt Duplikatfenster in aehnlichen Codebloecken.

{
  "summary": {
    "language": "python",
    "functionCount": 2,
    "duplicateClusters": 1
  },
  "duplicates": [
    {
      "occurrences": 2,
      "lines": [
        1,
        6
      ]
    }
  ]
}
Eingabeparameter anzeigen
{ "sourceCode": "def normalize_user(row):\n email = row[\"email\"].strip().lower()\n if not email:\n return None\n return {\"email\": email, \"team\": row.get(\"team\", \"general\")}\n\ndef normalize_admin(row):\n email = row[\"email\"].strip().lower()\n if not email:\n return None\n return {\"email\": email, \"team\": row.get(\"team\", \"general\")}", "language": "python", "longFunctionThreshold": 20, "nestingThreshold": 3, "duplicateWindow": 3 }

Wichtige Fakten

Kategorie
Entwicklung & Web
Eingabetypen
textarea, select, number
Ausgabetyp
json
Sample-Abdeckung
4
API verfügbar
Yes

Überblick

Der Code Komplexitaets Analyzer evaluiert JavaScript, TypeScript, Python, Java und Go anhand zyklomatischer und kognitiver Komplexitaet, Verschachtelungstiefe sowie Code-Duplikaten. Das Tool identifiziert Hotspots, lange Funktionen und wiederholte Logikmuster, um technische Schulden fruehzeitig sichtbar zu machen und gezielte Refactorings zu ermoeglichen.

Wann verwenden

  • Vor Code-Reviews, um kritische Stellen und Testluecken zu identifizieren
  • Bei der Bewertung von Legacy-Code vor umfangreichen Refactoring-Massnahmen
  • Zur kontinuierlichen Qualitaetskontrolle und Metrik-Erfassung in Entwicklungsteams

So funktioniert es

  • Fuegen Sie den Quellcode in das Textfeld ein; die Sprache wird automatisch erkannt oder manuell gewaehlt
  • Passen Sie Schwellenwerte fuer Funktionslaenge, Verschachtelung und Duplikatfenster an Ihre Codebasis an
  • Das Tool analysiert die AST-Struktur und berechnet Komplexitaetsmetriken nach etablierten Heuristiken
  • Sie erhalten eine JSON-Ausgabe mit detaillierten Metriken pro Funktion und einer Zusammenfassung der Hotspots

Anwendungsfälle

Identifikation von Wartungsmonolithen und Hotspots in Legacy-Codebases
Priorisierung von Refactoring-Aufgaben nach objektiven Komplexitaetsmetriken
Erkennung von Duplikaten und fehlenden Abstraktionen in wachsenden Codebases

Beispiele

1. Refactoring einer ueberkomplexen Checkout-Funktion

Senior-Entwickler
Hintergrund
Ein E-Commerce-System enthaelt eine 200-zeilige JavaScript-Funktion zur Preisberechnung mit tief verschachtelten Rabattbedingungen, die bei jedem Deployment neue Bugs produziert.
Problem
Die Funktion weist zyklomatische Komplexitaet 18 auf und enthaelt 5 Ebenen Verschachtelung, was die Testabdeckung und Wartbarkeit erheblich erschwert.
Verwendung
Fuegen Sie den Checkout-Code in das Eingabefeld ein, waehlen Sie JavaScript als Sprache und setzen Sie nestingThreshold auf 3.
Beispielkonfiguration
{"language": "javascript", "longFunctionThreshold": 50, "nestingThreshold": 3, "duplicateWindow": 5}
Ergebnis
Das Tool markiert die Funktion als Deep-Nesting-Hotspot mit kritischer Komplexitaet, was den Entwickler zur Extraktion dedizierter Rabatt-Helper motiviert.

2. Duplikate in Python-Datenverarbeitung identifizieren

Data Engineer
Hintergrund
In einer ETL-Pipeline wurden Normalisierungsfunktionen fuer Nutzer- und Admin-Daten separat entwickelt, enthalten aber identische Sanitizing-Logik fuer Email-Adressen.
Problem
Zwei Funktionen mit 90% identischer Code-Struktur verursachen doppelte Wartungsarbeit und Inkonsistenzen bei zukuenftigen Anpassungen.
Verwendung
Fuegen Sie beide Funktionen in das Textfeld ein, setzen Sie die Sprache auf Python und reduzieren Sie duplicateWindow auf 3 fuer praezise Erkennung.
Beispielkonfiguration
{"language": "python", "longFunctionThreshold": 20, "nestingThreshold": 3, "duplicateWindow": 3}
Ergebnis
Das Tool identifiziert das Duplikat und zeigt die betroffenen Zeilenbereiche an, was die Extraktion einer gemeinsamen normalize_entity() Funktion ermoeglicht.

Mit Samples testen

development

Verwandte Hubs

FAQ

Welche Programmiersprachen werden unterstuetzt?

JavaScript, TypeScript, Python, Java und Go. Die Sprache kann automatisch erkannt oder manuell festgelegt werden.

Was bedeutet zyklomatische Komplexitaet?

Die zyklomatische Komplexitaet misst die Anzahl linear unabhaengiger Pfade durch den Code, typischerweise basierend auf Verzweigungen wie if-Anweisungen und Schleifen.

Wie werden Duplikate im Code erkannt?

Das Tool scannt Codebloecke innerhalb eines konfigurierbaren Fensters (Duplicate Window) und identifiziert strukturell aehnliche Sequenzen, die auf Copy-Paste-Entwicklung hindeuten.

Was ist der Unterschied zwischen kognitiver und zyklomatischer Komplexitaet?

Zyklomatische Komplexitaet zaehlt Ausfuehrungspfade, waehrend kognitive Komplexitaet die mentale Belastung beim Lesen und Verstehen des Codes bewertet.

Welche Schwellenwerte sind empfehlenswert?

Funktionen sollten idealerweise unter 50 Zeilen bleiben, Verschachtelungen unter 4 Ebenen. Kritisch wird es bei zyklomatischer Komplexitaet ab Werten von 10 und hoeher.

API-Dokumentation

Request-Endpunkt

POST /de/api/tools/code-complexity-analyzer

Request-Parameter

Parameter-Name Typ Erforderlich Beschreibung
sourceCode textarea Ja -
language select Nein -
longFunctionThreshold number Nein -
nestingThreshold number Nein -
duplicateWindow number Nein -

Antwortformat

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
JSON-Daten: JSON-Daten

MCP-Dokumentation

Fügen Sie dieses Tool zu Ihrer MCP-Server-Konfiguration hinzu:

{
  "mcpServers": {
    "elysiatools-code-complexity-analyzer": {
      "name": "code-complexity-analyzer",
      "description": "Analysiert zyklomatische und kognitive Komplexitaet, Verschachtelung und Duplikate",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=code-complexity-analyzer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Sie können mehrere Tools verketten, z.B.: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, maximal 20 Tools.

Wenn Sie auf Probleme stoßen, kontaktieren Sie uns bitte bei [email protected]