ForHosting KIT · Entwickler-Tools

Code-Dateien vergleichen: hinzugefügte und entfernte Zeilen

Sehen Sie genau, was sich zwischen zwei Dateiversionen geändert hat: Wird return a + b in zwei neue Zeilen umgeschrieben, ergibt das 2 hinzugefügte, 1 entfernte und 3 unveränderte Zeilen, mit alten und neuen Zeilennummern und klassischer Diff-Ansicht. Kostenlos in Ihrem Browser.

  • Kostenlos
  • Läuft in Ihrem Browser
  • Ohne Anmeldung
  • Ihre Daten bleiben auf Ihrem Gerät
Nutzen Sie es über WebAPIE-MailTelegramApp bald

Vergleichen Sie zwei Versionen einer Quellcodedatei und erhalten Sie eine deterministische Aufstellung aller Änderungen, Zeile für Zeile. Das Ergebnis kennzeichnet jede hinzugefügte, entfernte und unveränderte Zeile, nennt gegebenenfalls die alten und neuen Zeilennummern und liefert eine vertraute Gesamtansicht für Protokolle oder Prüfoberflächen. Die Funktion eignet sich für jede textbasierte Programmiersprache. Sie interpretiert keine Syntax, führt keinen Code aus, greift auf kein Repository zu und verändert keine Version. Dadurch ist sie ein kleiner, berechenbarer Baustein für Entwicklungswerkzeuge, Lernsysteme, Migrationsprüfungen und automatisierte Review-Abläufe.

Geben Sie beide Codeversionen an

Eine der Versionen darf leer sein und steht dann folgerichtig für eine neu erstellte oder vollständig gelöschte Datei. Beide dürfen jedoch nicht leer sein, da es sonst keinen sinnvollen Vergleich gäbe. Zeilenenden werden vor dem Vergleich vereinheitlicht.

Dadurch lassen sich Windows-Text mit CRLF und Unix-Text mit LF vergleichen, ohne dass jede Zeile fälschlich als geändert erscheint. Der Vergleich ist bewusst sprachunabhängig: JavaScript, Python, Go, Rust, Konfigurationsdateien, Vorlagen, SQL und andere zeilenorientierte Texte folgen denselben Regeln. Nach der Vereinheitlichung werden die Zeilen exakt verglichen.

Leerzeichen, Tabulatoren, Groß- und Kleinschreibung, Satzzeichen und Kommentare bleiben bedeutsam, da solche Einzelheiten das Programmverhalten ändern können. Geben Sie den vollständigen Text und keinen Patch an. Das Ergebnis wertet den Code niemals aus und löst keine Importe auf; daher können Sie auch nicht vertrauenswürdige Ausschnitte als Klartext vergleichen.

Für einen vorhersehbaren Ressourcenbedarf ist jede Version auf 2,000 Zeilen begrenzt. Teilen Sie außergewöhnlich große generierte Dateien vor dem Senden auf.

Verstehen Sie strukturierte Änderungen und Gesamtansicht

Die Antwort enthält ein identical-Kennzeichen, eine Zusammenfassung, ein strukturiertes Zeilen-Array und Text im vereinheitlichten Stil. Die Zusammenfassung zählt hinzugefügte, entfernte und unveränderte Zeilen. Jeder strukturierte Eintrag enthält einen Typ und den exakten Text.

Nicht zutreffende Felder werden ausgelassen; dies vereinfacht die Weiterverarbeitung gegenüber Platzhaltern mit null. Eine geänderte Zeile erscheint als eine Entfernung und eine Hinzufügung, entsprechend der grundlegenden Semantik klassischer zeilenbasierter Diff-Werkzeuge. Danach folgen ein Bereichskopf und Zeilen mit Präfix: Ein Leerzeichen bedeutet unverändert, ein Minuszeichen entfernt und ein Pluszeichen hinzugefügt.

Die Ausgabe umfasst die gesamte übermittelte Datei, statt weit auseinanderliegende Bereiche in getrennte Kontextblöcke zu verdichten. Dadurch bleibt die Verarbeitung einfach, und die strukturierte Liste beschreibt genau dieselbe Reihenfolge wie die Textansicht.

Nutzen Sie deterministische Ausgaben in Entwicklungsabläufen

Der Algorithmus ermittelt eine geordnete gemeinsame Teilfolge. So erkennt er Einfügungen und Löschungen auch dann, wenn sich Zeilennummern verschieben. Doppelte Zeilen werden anhand ihrer Position und Reihenfolge behandelt und nicht so, als wäre die Datei eine Menge.

Wenn mehrere gültige Ausrichtungen möglich sind, nutzt die Implementierung eine stabile Entscheidungsregel; gleiche Eingaben erzeugen somit immer dieselbe Ausgabe. Verwenden Sie das strukturierte Array für eine Gegenüberstellung, zum Zählen von Änderungstypen, zum Beschriften von Zeilennummern oder zum Durchsetzen einer Richtlinie. Dafür wären Sprachparser oder Versionsverwaltungskontext nötig.

Das engere Zeilenmodell bietet transparentes Verhalten ohne Netzwerkabhängigkeit und lässt sich mit denselben zwei Zeichenketten lokal reproduzieren.

Erstellen Sie eine Code-Review-Ansicht

Zeigen Sie strukturierte hinzugefügte, entfernte und gleiche Zeilen mit den korrekten alten und neuen Nummern an.

Prüfen Sie Änderungen an erzeugtem Code

Vergleichen Sie Ausgaben zweier Läufe und speichern Sie eine deterministische Gesamtansicht in den Build-Protokollen.

Erläutern Sie die Überarbeitung einer Aufgabe

Zeigen Sie Lernenden genau, welche Quellzeilen eingefügt oder gelöscht wurden, ohne den eingereichten Code auszuführen.

Was kostet ein Vergleich?

Im Browser kann dieselbe deterministische Logik lokal ausgeführt werden.

Welche Programmiersprachen werden unterstützt?

Jede textbasierte Sprache wird unterstützt, da der Vergleich zeilenweise und unabhängig von der Syntax erfolgt.

Werden reine Leerraumänderungen gemeldet?

Ja. Leerzeichen und Tabulatoren sind relevant; eine Zeile mit geändertem Leerraum erscheint daher entfernt und hinzugefügt.

Darf eine der Versionen leer sein?

Ja. Eine leere Version steht für eine neue oder gelöschte Datei. Nur zwei leere Versionen führen zu einem Fehler.

Verwendet das Ergebnis das vereinheitlichte Diff-Format?

Es liefert Dateimarkierungen, einen Bereichskopf und bekannte Zeilenpräfixe sowie strukturierte Einträge. Es ist eine Gesamtansicht der Datei und keine Folge verdichteter Kontextblöcke.

Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.

POSThttps://api.kit.forhosting.com/dev2/diff-two-code-files

Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.

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"
  }
}

Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.

pro Anfrage$0.002

Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.

HTTPCodeBedeutung
401unauthorizedDer API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer).
402insufficient_balanceIhr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht.
404unknown_typeUnbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog.
429rate_limitedZu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt.

Geben Sie beide Codeversionen an

Übermitteln Sie den früheren Quelltext in original_code und den späteren in revised_code.

Verstehen Sie strukturierte Änderungen und Gesamtansicht

Unveränderte Einträge enthalten old_line und new_line, weil die Zeile in beiden Versionen vorkommt. Entfernte Einträge enthalten old_line, hinzugefügte dagegen new_line. Das Feld unified_diff beginnt mit Markierungen für Original und Überarbeitung.

Nutzen Sie deterministische Ausgaben in Entwicklungsabläufen

Verwenden Sie unified_diff für einen lesbaren Protokolleintrag, einen kompakten Aufgabenanhang oder ein Werkzeug, das die üblichen Präfixe versteht. Diese Fähigkeit bietet keinen syntaxbezogenen Abgleich, keine Umbenennungserkennung, keine Hervorhebung einzelner Token, keine Lösung von Merge-Konflikten und keinen Repository-Zugriff.

Vollständige KIT-Dokumentation lesen →