Protobuf Fixer
Conserte arquivos .proto quebrados online — corrija pontos e vírgulas faltando, chaves não fechadas, declarações de syntax inválidas e erros de tag.
O que é o Protobuf Fixer?
Está com um arquivo .proto quebrado? O protoc falha por causa de um único ponto e vírgula faltando, um corpo de message não fechado ou uma chave perdida, e o resto do arquivo vira lixo até você descobrir onde está o erro. Esta ferramenta lê schemas Protocol Buffers mal formados e conserta esses problemas automaticamente — cole o conteúdo e a gente devolve uma versão limpa.
Ela checa primeiro o que o protoc reclama mais: syntax = "proto3"; faltando no topo, ponto e vírgula ausente em linhas de campo, {} desbalanceadas em corpos aninhados de message/enum e problemas com aspas e imports. A saída segue as mesmas regras descritas no guia oficial de proto3 e na referência da gramática proto3, então o que volta é um schema que o protoc realmente aceita.
Sem upload de arquivo, sem compartilhar schema — seu .proto fica nesta aba. Conserte em segundos e volte a gerar os bindings.
Como Usar o Protobuf Fixer
Três passos. Funciona com schemas tirados de um repositório, copiados de um code review ou editados na mão e agora quebrados.
Cole o .proto Quebrado ou Carregue o Exemplo
Jogue o schema quebrado no editor da esquerda. Aperte Exemplo .proto para carregar um exemplo com os erros mais comuns — ponto e vírgula faltando depois de um campo, um corpo de message que nunca fecha e um ponto e vírgula ausente na linha do syntax. Exemplo de proto quebrado:
syntax = "proto3"
message LineItem {
string sku = 1;
int32 quantity = 2
double unit_price = 3;Dois erros aqui: nenhum ponto e vírgula depois da declaração de syntax, e o bloco LineItem nunca é fechado. Os dois são típicos do que o fixer conserta.
Clique em Consertar Protobuf!!
Aperte o botão verde Consertar Protobuf!!. O fixer lê o schema, restaura ponto e vírgula faltando, equilibra as chaves {}, normaliza a declaração syntax e coloca aspas corretas nos imports. Tags de campo, nomes e tipos ficam intocados.
Revise a Saída Corrigida
O painel da direita tem o .proto reparado. Cole de volta no projeto e rode protoc para confirmar. Para schemas que dirigem serviços RPC, vale também conferir o resultado no nosso Protobuf Validator antes de gerar bindings. Tudo roda no seu navegador — o schema nunca é armazenado.
Quando Você Vai Usar Isso de Verdade
Recuperar um Schema Editado na Mão
Você adicionou um campo novo, apagou uma chave sem querer, e agora o protoc reporta erros três messages mais abaixo. Cole o arquivo aqui, recupere a chave e siga em frente — em vez de caçar com os olhos num schema de 400 linhas.
Consertar .proto Gerado por LLM
Pediu pra uma LLM rascunhar um .proto a partir de uma amostra JSON? A estrutura geralmente está certa, mas ela esquece syntax = "proto3";, derruba ponto e vírgula ou embrulha tudo em cercas de markdown. O fixer limpa isso.
Reparar Depois de um Merge Mal-Resolvido
Os marcadores de conflito foram resolvidos no susto e o .proto não compila mais. Passe pelo fixer para recolocar a estrutura no lugar e revisar o diff semântico de verdade no Git, em vez de brigar com sintaxe.
Resgatar Schemas de Logs ou Docs
Tirou um .proto de uma página de wiki, da descrição de uma PR antiga ou de um OCR de screenshot? O texto costuma vir com caracteres estranhos e indentação quebrada. O fixer devolve algo que o protoc aceita.
Perguntas Frequentes
Meu arquivo .proto fica armazenado ou é enviado para algum lugar?
Seu schema é enviado pro nosso backend só pra rodar o reparo, e a gente não persiste ele — assim que a resposta volta, ele some. Nada é logado junto com seus dados, e não tem trackers de terceiros no caminho da requisição. Se for um schema sensível (serviços internos, APIs ainda não lançadas), tira os identificadores antes de colar, do mesmo jeito que você faria pra compartilhar num bug report público.
Que tipos de erro ele realmente conserta?
Os mais comuns que o protoc rejeita: declaração de syntax ausente ou errada (ele coloca syntax = "proto3"; se não tiver), ponto e vírgula faltando em linhas de campo/option/enum, {} desbalanceadas em blocos message/enum/service, aspas faltando ou inconsistentes em options de string e imports, e erros de digitação óbvios em palavras-chave como repeated ou optional.
Ele vai mudar os números das tags ou renomear alguma coisa?
Não. O fixer recebe instrução explícita para reparar só sintaxe — nunca renomear messages/campos, mudar números de tag ou inventar campos novos. Os números de tag fazem parte do seu wire format; mexer neles quebra a compatibilidade retroativa. Se a saída parecer ter mudado conteúdo semântico, trate como bug e não dê commit.
Ele suporta proto2 além de proto3?
Sim, no nível de sintaxe — ponto e vírgula faltando, chaves desbalanceadas e declarações de syntax ruins são tratadas do mesmo jeito nos dois. O fixer respeita o que estiver na linha syntax; ele não vai virar um schema proto2 em proto3 (eles têm semântica diferente em torno de required/optional e defaults).
Por que não rodar o protoc e ler o erro direto?
Você deveria — o protoc é a fonte da verdade. Mas os erros dele apontam um lugar de cada vez, e uma chave faltando pode virar dez erros em cascata depois. O fixer é pra quando você quer destravar o arquivo inteiro de uma vez, e aí roda o protoc de novo pra confirmar. Pense nele como uma primeira passada, não como substituto.
Ele aguenta schemas grandes com muitos imports?
Aguenta, até alguns milhares de linhas por requisição. O reparo só olha pro arquivo que você colou — não segue import nem busca schemas externos. Se seu schema importa google/protobuf/timestamp.proto ou outros tipos well-known, esses imports são preservados como estão.
Outras Ferramentas Protobuf
Consertar a sintaxe é o primeiro passo. Quando o schema compila, estas ferramentas levam você até o resto do caminho: