2017-06-02 1 views
1

Ich versuche, ein Projekt von Google Protocol Buffers 3.0.0-Beta-2 auf 3.1.0 zu portieren. Nachdem ich meine .proto Datei neu kompiliert habe, bemerkte ich, dass ich eine Reihe von Kompilierungsfehlern mit dem Projekt hatte, weil ich einen Codierungsstandard, den ich nicht ausgewählt hatte, protoc durchsetzte und die Felder entsprechend umbenannte. Ich möchte z. B. nicht umbenennen. MDData zu Mddata oder XYServer zu Xyserver innerhalb des Projekts, da die beabsichtigten Bedeutungen der Abkürzungen nun verloren sind und möglicherweise Änderungen in weiteren Protocol Buffer Releases folgen können.Verhindern, dass Protobuffer Felder (Klassen, Member, Enum-Elemente) umbenennt

Ich habe dieses Verhalten bisher auf dem C# -Teil gesehen und bin nicht sicher, ob dies auch für generierten Code für C++ der Fall ist.

TL; DR:

Gibt es eine Möglichkeit der automatischen Code-Stil Änderungen im Google Protocol Buffer des Proto-Compiler zu deaktivieren (und meine eigene Formatierung zu halten) von Feldern?

Antwort

0

Es gibt keine Möglichkeit, dies zu erzwingen, indem Sie Ihren eigenen Codegenerator schreiben. Nur die öffentliche API der Stubs gilt als stabil.

Unter der Haube, der Protoc-Compiler regeneriert den Code jedes Mal von Grund auf neu, so dass es keine Möglichkeit gibt, den ursprünglichen Stil der Datei zu kennen. Es müsste zusammen mit dem Proto in der ursprünglichen generierten Datei übergeben werden, um dies zu tun.

Das heißt, wenn Sie den Code-Generator ändern möchten, ist es sicherlich möglich.

+0

Vielen Dank für Ihre Antwort. Könnten Sie eine Verknüpfung mit einem Verweis darauf herstellen, was als Teil der öffentlichen API betrachtet wird und was nicht? Beim Upgrade haben sich beispielsweise die Namen der Enum-Werte geändert. Wird dies als Teil der öffentlichen API betrachtet? – vonludi

Verwandte Themen