Protobuf-Kompatibilitätsprüfung
Vergleiche zwei Versionen einer .proto-Datei und finde Änderungen, die bereits binär oder als JSON geschriebene Nachrichten inkompatibel machen. Entfernte Nummern, Typänderungen, umbenannte Felder und Enum-Änderungen werden einzeln erklärt.
Akzeptiert zwei .proto-Dateien mit jeweils bis zu 1.000.000 Zeichen, höchstens 200.000 Tokens, 2.000 Nachrichten und Enumerationen, 10.000 Feldern pro Nachricht und 32 Ebenen verschachtelter Nachrichten. Der Vergleich läuft in deinem Browser in einem Hintergrund-Worker. Downloads: ein JSON-Bericht und eine CSV-Befundliste. Die Version, mit der vorhandene Daten geschrieben wurden. Füge die geänderte Datei in „Neues Schema“ ein. Bis zu 1.000.000 Zeichen. Prüfe die Einstellungen vor dem Start.
Dein Ergebnis
Protobuf-Kompatibilitätsprüfung
- Füge die alte .proto-Datei in das Hauptfeld ein.
- Füge die neue Version in das Feld „Neues Schema“ ein.
- Starte die Prüfung und prüfe die Befunde, die schwerwiegendsten zuerst.
- Lade den JSON-Bericht oder die CSV-Liste herunter.
Was du wissen solltest
Akzeptiert zwei .proto-Dateien mit jeweils bis zu 1.000.000 Zeichen, höchstens 200.000 Tokens, 2.000 Nachrichten und Enumerationen, 10.000 Feldern pro Nachricht und 32 Ebenen verschachtelter Nachrichten. Der Vergleich läuft in deinem Browser in einem Hintergrund-Worker. Downloads: ein JSON-Bericht und eine CSV-Befundliste.
Schweregrade
Inkompatibel bedeutet, dass alte und neue Programme binäre Nachrichten falsch lesen können: ein entferntes Feld ohne reservierte Nummer, eine aus einem reservierten Bereich wiederverwendete Nummer, ein Typ mit anderer Binärcodierung, ein Wechsel zwischen einzeln und wiederholt, eine entfernte Nachricht oder Enumeration oder ein neu nummerierter Enum-Wert. JSON-inkompatibel bedeutet, dass Binärdaten weiterhin funktionieren, sich jedoch das JSON- oder Textformat ändert, etwa durch umbenannte Felder oder Enum-Werte. Warnungen betreffen binär kompatible Änderungen, die Werte abschneiden oder anders interpretieren können, etwa int32 zu int64 oder Verschiebungen in ein oneof oder daraus heraus.
Wie verglichen wird
Nachrichten und Enumerationen werden gemäß den protobuf-Sprachregeln zur Aktualisierung eines Nachrichtentyps anhand ihres Namens ohne Paket und Felder anhand ihrer Nummer zugeordnet. Nachrichten und Enumerationen innerhalb anderer Nachrichten werden ebenfalls verglichen.
Was nicht unterstützt wird
Der Parser liest proto2- und proto3-Dateien mit Nachrichten, Enumerationen, oneof, Maps, verschachtelten Typen, reservierten Nummern und Namen sowie Feldoptionen. Imports werden aufgelistet, aber nicht aufgelöst; Typen aus anderen Dateien werden daher nur nach Namen verglichen. Editionen, Gruppen und Erweiterungen werden abgelehnt. Dienste werden übersprungen.