ForHosting KIT · Strumenti per sviluppatori

Confronti due file di codice: righe aggiunte e rimosse

Veda con precisione che cosa è cambiato tra due versioni di un file: riscrivere return a + b in due righe nuove dà 2 aggiunte, 1 rimossa e 3 invariate, con i numeri di riga vecchi e nuovi e la classica vista diff. Gratis nel suo browser.

  • Gratis
  • Funziona nel suo browser
  • Senza registrazione
  • I suoi dati restano sul dispositivo
Usalo da WebAPIEmailTelegramApp presto

Confronti due versioni di un file sorgente e ottenga un resoconto deterministico, riga per riga, di ogni modifica. Il risultato individua tutte le righe aggiunte, rimosse e invariate, include i numeri di riga precedenti e nuovi quando applicabili e offre una familiare vista unificata per log o schermate di revisione. Funziona con qualsiasi linguaggio di programmazione basato su testo e non interpreta la sintassi, non esegue il codice, non consulta repository e non modifica le versioni. È quindi un componente piccolo e prevedibile per strumenti di sviluppo, sistemi didattici, controlli di migrazione e flussi automatizzati di revisione.

Fornisca le due versioni del codice

Una delle due versioni può essere vuota, rappresentando in modo naturale un file appena creato o completamente eliminato, ma non possono esserlo entrambe perché non vi sarebbe nulla di significativo da confrontare. Le terminazioni di riga vengono normalizzate prima del confronto: un testo Windows con CRLF e uno Unix con LF possono quindi essere comparati senza segnalare ogni riga come cambiata. Il confronto è volutamente indipendente dal linguaggio: JavaScript, Python, Go, Rust, file di configurazione, modelli, SQL e altri testi organizzati per righe seguono le stesse regole.

Dopo la normalizzazione delle interruzioni, le righe vengono confrontate esattamente. Spazi, tabulazioni, maiuscole, punteggiatura e commenti restano significativi, poiché possono cambiare il comportamento del programma. Fornisca il testo completo anziché una patch.

Il risultato non valuta mai il codice e non risolve le importazioni, perciò anche frammenti non attendibili possono essere confrontati come semplice testo. Per mantenere prevedibile l’uso delle risorse, ogni versione è limitata a 2,000 righe; suddivida prima dell’invio i file generati eccezionalmente grandi.

Legga le modifiche strutturate e la vista unificata

La risposta contiene un indicatore identical, un riepilogo, un array strutturato di righe e un testo in stile unificato. Il riepilogo conta le righe aggiunte, rimosse e invariate. Ogni record strutturato presenta un tipo e il testo esatto.

I campi non applicabili vengono omessi, rendendo le elaborazioni successive più chiare rispetto a valori null. Una riga modificata è rappresentata come una rimozione e un’aggiunta, secondo la semantica fondamentale dei tradizionali strumenti di differenza per riga. L’output copre l’intero file fornito invece di comprimere zone distanti in blocchi di contesto separati.

Questa scelta semplifica l’analisi e garantisce che l’elenco strutturato e la vista testuale descrivano esattamente la stessa sequenza.

Usi un output deterministico nei flussi di sviluppo

L’algoritmo individua una sottosequenza comune ordinata, riconoscendo inserimenti ed eliminazioni anche quando i numeri di riga si spostano. Le righe duplicate vengono gestite in base alla posizione e all’ordine, non come se il file fosse un insieme. Quando esiste più di un allineamento valido, l’implementazione applica una regola stabile di spareggio; pertanto, gli stessi input producono sempre lo stesso output.

Usi l’array strutturato per creare una vista affiancata, contare i tipi di modifica, annotare i numeri di riga o applicare una regola. Questa capacità non esegue corrispondenze basate sulla sintassi, rilevamento delle rinomine, evidenziazione per token, risoluzione dei conflitti di merge o accesso ai repository. Tali compiti richiedono parser del linguaggio o il contesto del controllo versione.

Il modello limitato alle righe offre invece un comportamento trasparente, nessuna dipendenza dalla rete e un risultato riproducibile localmente con le stesse due stringhe.

Crei una vista di revisione del codice

Visualizzi record strutturati di righe aggiunte, rimosse e invariate con i numeri precedenti e nuovi corretti.

Controlli le modifiche al codice generato

Confronti l’output di due esecuzioni e conservi nei log di build un resoconto deterministico in stile unificato.

Spieghi la revisione di un esercizio

Mostri agli studenti quali righe sorgente sono state inserite o eliminate, senza eseguire il codice consegnato.

Quanto costa un confronto?

L’esperienza nel browser può eseguire localmente la stessa logica deterministica.

Quali linguaggi di programmazione sono supportati?

È supportato qualsiasi linguaggio basato su testo, perché il confronto avviene per righe e non dipende dalla sintassi.

Le modifiche ai soli spazi vengono segnalate?

Sì. Spazi e tabulazioni sono significativi, quindi una riga con spaziatura diversa risulta rimossa e aggiunta.

Una delle versioni può essere vuota?

Sì. Una versione vuota rappresenta un file nuovo o eliminato. Viene restituito un errore solo se entrambe sono vuote.

Il risultato usa il formato diff unificato?

Fornisce marcatori di file, intestazione di intervallo e prefissi di riga familiari, oltre ai record strutturati. È una vista unificata dell’intero file, non una serie di blocchi di contesto compressi.

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/dev2/diff-two-code-files

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/dev2/diff-two-code-files \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"original_code":"function greet(name) {\n  return `Hello, ${name}`;\n}\n","revised_code":"function greet(name = \"world\") {\n  return `Hello, ${name}!`;\n}\n"}'
{
  "original_code": "function greet(name) {\n  return `Hello, ${name}`;\n}\n",
  "revised_code": "function greet(name = \"world\") {\n  return `Hello, ${name}!`;\n}\n"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.diff_two_code_files",
  "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.

Fornisca le due versioni del codice

Inserisca il testo sorgente precedente in original_code e quello successivo in revised_code.

Legga le modifiche strutturate e la vista unificata

I record invariati includono old_line e new_line perché la riga esiste in entrambe le versioni. Quelli rimossi includono old_line, mentre quelli aggiunti includono new_line. Il campo unified_diff inizia con i marcatori dei file originale e revisionato, seguiti da un’intestazione di intervallo e da righe con prefisso: uno spazio indica una riga invariata, il segno meno una rimozione e il segno più un’aggiunta.

Usi un output deterministico nei flussi di sviluppo

Usi unified_diff per scrivere una voce di log leggibile, allegare un artefatto compatto a un’attività o alimentare uno strumento che riconosce i prefissi consueti.

Leggi la documentazione completa del KIT →