ForHosting KIT · Strumenti per sviluppatori

Calcolatrice di complessità ciclomatica

L'API di complessità ciclomatica calcola la metrica di McCabe a partire dalla struttura di un grafo di flusso di controllo: Lei fornisce il numero di archi, il numero di nodi e il numero di componenti connesse, e restituisce la complessità ciclomatica M = E − N + 2P, il numero minimo di cammini linearmente indipendenti attraverso il codice e un limite inferiore dei casi di test necessari per una copertura completa dei rami. Nessun codice sorgente da caricare, nessun analizzatore da configurare: solo tre conteggi del grafo che già possiede e un numero deterministico in risposta, calcolato allo stesso modo nel Suo browser e sul nostro edge.

● BetaGratis · nel tuo browser
Usalo da WebAPIEmailTelegramApp presto

Cosa misura la complessità ciclomatica

La complessità ciclomatica, introdotta da Thomas McCabe nel 1976, conta il numero di cammini linearmente indipendenti nel grafo di flusso di controllo di un programma. Ogni punto di decisione — un if, un ciclo while, un ramo case, un'espressione condizionale — aggiunge un cammino, quindi la metrica riflette quanto un pezzo di codice sia difficile da testare e da comprendere. Un valore pari a 1 significa codice lineare, senza alcun ramo. Un valore pari a 10 è la soglia ampiamente citata oltre la quale un modulo comincia a richiedere una suddivisione. Il numero è una proprietà del grafo, non del linguaggio: una volta disegnato il grafo di flusso di controllo di una funzione, la sua complessità è fissata, e questa calcolatrice di complessità ciclomatica la valuta direttamente dai tre conteggi del grafo. Poiché l'input è solo archi, nodi e componenti, funziona per pseudocodice, diagrammi di flusso e grafi esportati da qualsiasi strumento di analisi statica, senza bisogno di condividere il codice sorgente stesso.

La formula M = E − N + 2P

La metrica si calcola come M = E − N + 2P, dove E è il numero di archi del grafo di flusso di controllo, N il numero di nodi e P il numero di componenti connesse. Per un singolo programma o funzione il grafo è un'unica componente connessa, quindi P = 1 e la formula si riduce a M = E − N + 2. Quando si analizzano più funzioni disconnesse contemporaneamente — ad esempio i grafi di chiamata di tre moduli separati disegnati in un unico diagramma — P conta ogni parte disconnessa e il termine +2P mantiene il risultato coerente con la somma delle complessità delle parti. L'endpoint restituisce anche decision_points, definito come M − 1, che equivale al numero di predicati di un programma strutturato il cui grafo è stato misurato. Tutti e tre gli input devono essere interi positivi; la chiamata rifiuta frazioni, zero, conteggi negativi e valori non numerici, perché tali conteggi non possono descrivere un grafo di flusso di controllo reale e accettarli in silenzio nasconderebbe un errore di misura a monte.

Come usare il numero nella pratica

La complessità indica il numero minimo di casi di test necessari per esercitare ogni cammino indipendente, quindi i team la usano come base di copertura nella pianificazione dei test: una funzione con M = 7 non può essere testata completamente nei rami con tre test, per quanto ingegnosi siano. Alimenta anche la politica di revisione del codice — molte aziende segnalano qualsiasi funzione la cui complessità superi un limite concordato — e il monitoraggio del debito tecnico, in cui la somma o il massimo su una base di codice viene osservato versione dopo versione. Questa API è il passaggio aritmetico di quel flusso di lavoro: conti archi, nodi e componenti dal Suo analizzatore o diagramma, li invii e ottenga sempre lo stesso valore, perché il calcolo è completamente deterministico, senza arrotondamenti né euristiche. Viene eseguita sul nostro edge globale a $0.002 per richiesta, e lo stesso codice viene eseguito gratuitamente nel Suo browser su questa pagina, così può verificare una cifra a mano e pagare solo quando automatizza il controllo in una pipeline.

Fissare una base di copertura dei test

Trasformi i conteggi del grafo del Suo analizzatore statico nel numero minimo di casi di test per coprire ogni cammino indipendente di una funzione.

Imporre un budget di complessità in CI

Faccia fallire una build quando la complessità ciclomatica di un modulo supera la soglia concordata dal team, calcolata da archi, nodi e componenti.

Controllare le risposte di compiti ed esami

Verifichi il risultato di un esercizio di ingegneria del software che chiede il numero di McCabe da un diagramma di flusso, con la formula mostrata nella risposta.

Quanto costa?

$0.002 a richiesta. È anche gratuita nel Suo browser su questa pagina: lo stesso codice calcola entrambe le cose.

Quale formula viene usata?

La formula originale di McCabe, M = E − N + 2P, dove E sono gli archi, N i nodi e P le componenti connesse. Per un singolo programma P = 1, quindi E − N + 2.

Perché i miei dati vengono rifiutati?

Archi, nodi e componenti devono essere interi positivi. Zero, numeri negativi, frazioni e valori non numerici non possono descrivere un grafo di flusso di controllo reale e vengono rifiutati come input non valido.

Che cos'è il campo decision_points?

È M − 1: il numero di nodi predicato (di decisione) di un programma strutturato il cui grafo ha questa complessità. È una comodità per i team che contano if e cicli invece degli archi.

Devo inviare il codice sorgente?

No. L'input è costituito da tre conteggi del grafo di flusso di controllo, quindi il codice proprietario non lascia mai il Suo analizzatore: viaggiano solo i totali di archi, nodi e componenti.

Il risultato è deterministico?

Sì. È aritmetica intera esatta, senza arrotondamenti, casualità o chiamate esterne: gli stessi tre conteggi restituiscono sempre la stessa complessità.

Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.

POSThttps://api.kit.forhosting.com/math/cyclomatic-complexity

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

curl -X POST https://api.kit.forhosting.com/math/cyclomatic-complexity \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"edges":9,"nodes":8,"components":1}'
{
  "edges": 9,
  "nodes": 8,
  "components": 1
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.cyclomatic_complexity",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Leggi la documentazione completa del KIT →