Запретить Protobuffer переименовывать поля (классы, члены, элементы перечисления)

Я пытаюсь перенести проект из Google Protocol Buffers 3.0.0-beta-2 в 3.1.0. После перекомпиляции моего .proto файла я заметил, что у меня было несколько ошибок компиляции в проекте из-за того, что протоколом был соблюден стандарт кодирования, который я не выбрал, и соответственно переименовал поля. Я не хочу переименовывать, например От MDData до Mddata или от XYServer до Xyserver внутри проекта, поскольку предполагаемые значения сокращений теперь потеряны и, возможно, будут изменены в следующих выпусках Protocol Buffer.

Я видел такое поведение в части C # до сих пор и не уверен, что это также относится к сгенерированному коду для C ++.

TL; DR:

Есть ли способ отключить автоматическое изменение стиля кода в прототипе Google Protocol Buffer Proto Compiler (и сохранить собственное форматирование) полей?


person vonludi    schedule 02.06.2017    source источник


Ответы (1)


Невозможно добиться этого, кроме написания собственного генератора кода. Только публичный API заглушек считается стабильным.

Под капотом компилятор protoc каждый раз регенерирует код с нуля, поэтому у него нет возможности узнать исходный стиль файла. Для этого его нужно будет передать в исходном сгенерированном файле вместе с прототипом.

Тем не менее, если вы хотите изменить генератор кода, это, безусловно, возможно.

person Carl Mastrangelo    schedule 06.06.2017
comment
Спасибо за ваш ответ. Не могли бы вы дать ссылку на то, что считается частью общедоступного API, а что нет? При обновлении, например, имена значений перечисления изменились. Считается ли это частью общедоступного API? - person vonludi; 06.06.2017