Analyseur de Complexite du Code

Mesure la complexite, limbrication et la duplication du code

Analyse heuristique de qualite pour JavaScript, TypeScript, Python, Java et Go.

Exemples de résultats

2 Exemples

Analyser une fonction JavaScript tres branchee

Mesure la complexite dune fonction de tarification imbriquee avec des seuils serres.

{
  "summary": {
    "language": "javascript",
    "functionCount": 1,
    "averageCyclomaticComplexity": 5,
    "averageCognitiveComplexity": 4,
    "hotspotCount": 0,
    "longFunctionCount": 0,
    "deepNestingCount": 1,
    "duplicateClusters": 0
  },
  "functions": [
    {
      "name": "score",
      "cyclomaticComplexity": 5,
      "deepNesting": true
    }
  ]
}
Voir paramètres d'entrée
{ "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 }

Reperer une logique de normalisation dupliquee en Python

Detecte des fonctions auxiliaires repetees et confirme les fenetres de duplication entre blocs similaires.

{
  "summary": {
    "language": "python",
    "functionCount": 2,
    "duplicateClusters": 1
  },
  "duplicates": [
    {
      "occurrences": 2,
      "lines": [
        1,
        6
      ]
    }
  ]
}
Voir paramètres d'entrée
{ "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 }

Points clés

Catégorie
Développement et Web
Types d’entrée
textarea, select, number
Type de sortie
json
Couverture des échantillons
4
API disponible
Yes

Vue d’ensemble

Analysez la qualité de votre code source en mesurant la complexité cyclomatique, la complexité cognitive, l'imbrication profonde et la duplication. Cet outil supporte JavaScript, TypeScript, Python, Java et Go pour identifier rapidement les fonctions critiques et les redondances.

Quand l’utiliser

  • Avant une revue de code pour identifier les hotspots de complexité
  • Lors du refactoring pour prioriser les fonctions à simplifier
  • Pour évaluer la dette technique d'une codebase legacy

Comment ça marche

  • Collez votre code source dans le champ dédié ou laissez la détection automatique identifier le langage
  • Configurez les seuils de fonctions longues, d'imbrication et de fenêtre de duplication selon vos standards
  • L'analyseur calcule les métriques de complexité et détecte les blocs dupliqués
  • Consultez le rapport JSON détaillant la complexité par fonction et les clusters de duplication

Cas d’usage

Audit de qualité avant mise en production
Identification des fonctions critiques nécessitant des tests unitaires approfondis
Détection de code dupliqué à factoriser

Exemples

1. Optimisation d'une logique de tarification JavaScript

Développeur Frontend
Contexte
Une fonction de calcul de prix contient multiples conditions imbriquées difficiles à maintenir et tester.
Problème
Évaluer la complexité cognitive et cyclomatique avant refactoring.
Comment l’utiliser
Collez le code de la fonction score, sélectionnez JavaScript et définissez un seuil d'imbrication à 2.
Configuration d’exemple
language: javascript, nestingThreshold: 2, longFunctionThreshold: 8
Résultat
Détection d'une complexité cyclomatique de 5 et d'une imbrication profonde nécessitant simplification.

2. Élimination de duplication dans des normalisateurs Python

Ingénieur Backend
Contexte
Deux fonctions de normalisation présentent une logique quasi identique pour traiter différents rôles utilisateurs.
Problème
Repérer les duplications de code pour factoriser en une fonction utilitaire unique.
Comment l’utiliser
Insérez les deux fonctions normalize_user et normalize_admin, configurez une fenêtre de duplication à 3 lignes.
Configuration d’exemple
language: python, duplicateWindow: 3
Résultat
Identification d'un cluster de duplication sur 6 lignes à refactoriser.

Tester avec des échantillons

development

Hubs associés

FAQ

Quels langages sont supportés ?

JavaScript, TypeScript, Python, Java et Go.

Qu'est-ce que la complexité cyclomatique ?

C'est le nombre de chemins d'exécution dans une fonction, indiquant la difficulté des tests.

Comment fonctionne la détection de duplication ?

Elle identifie les séquences de code similaires selon la fenêtre de duplication configurée.

Puis-je ajuster les seuils d'alerte ?

Oui, modifiez les paramètres de seuil pour fonctions longues et imbrication.

Le code est-il stocké ?

Non, l'analyse s'effectue localement sans conservation de votre code.

Documentation de l'API

Point de terminaison de la requête

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

Paramètres de la requête

Nom du paramètre Type Requis Description
sourceCode textarea Oui -
language select Non -
longFunctionThreshold number Non -
nestingThreshold number Non -
duplicateWindow number Non -

Format de réponse

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
Données JSON: Données JSON

Documentation de MCP

Ajoutez cet outil à votre configuration de serveur MCP:

{
  "mcpServers": {
    "elysiatools-code-complexity-analyzer": {
      "name": "code-complexity-analyzer",
      "description": "Mesure la complexite, limbrication et la duplication du code",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=code-complexity-analyzer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Vous pouvez chaîner plusieurs outils, par ex.: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, max 20 outils.

Si vous rencontrez des problèmes, veuillez nous contacter à [email protected]