Input (.proto-skema)

Output (formateret .proto)

Hvad værktøjet gør

Du indsætter et Protocol Buffers-skema med blandet indrykning, sammenklemte feltdeklarationer eller tilfældige tomme linjer fra et copy-paste, og du vil have det til at se ud som resten af kodebasen. Denne formatter skriver filen om med to mellemrum per krøllet-parentes-niveau, præcis ét mellemrum omkring =, ét mellemrum efter , og højst én sammenhængende tom linje mellem blokke. Kommentarer — både //-linjekommentarer og /* ... */-blokkommentarer — bliver præcis dér, hvor du satte dem.

Den parser ikke og validerer ikke skemaet, hvilket betyder, at den fungerer på let ødelagt input, hvor buf format eller editorens "Format Document" måske ikke gør det. Hvis din .proto har en syntaksfejl et eller andet sted, bliver resten af filen alligevel formateret rundt om den. Bagsiden: den kan ikke omarrangere felter, normalisere import-rækkefølge eller fjerne ubrugte options, sådan som en rigtig parser-baseret formatter ville kunne. Til det skal du køre buf format i din build-pipeline.

Alt kører i din browser — ingen upload, ingen rate limit, intet skema sendes nogen steder hen. Praktisk når skemaet indeholder interne pakkenavne, typenavne eller andet, du ikke vil sende til en tredjeparts-API. Virker på enhver filstørrelse, din browser kan holde i hukommelsen; selv titusinder af linjer formateres på væsentlig mindre end et sekund.

Sådan bruger du det

Tre trin. Outputtet opdateres ca. 300 ms efter, at du holder op med at skrive.

1

Indsæt dit .proto-skema

Smid skemaet i den venstre editor. syntax, package, import-direktiver, message-blokke, indlejrede enumer, oneof, map<K, V> — alt håndteres. Blandede linjeskift (CRLF) normaliseres til LF på vej ud.

Formatteren omarrangerer ingenting — felter, importer og options bliver i den rækkefølge, du skrev dem. Vil du have kanonisk rækkefølge, så kør buf format bagefter.

2

Læs det formaterede output

Til højre: samme skema, indrykket med 2 mellemrum per {-niveau. Linjer, der starter med }, rykkes et niveau ud, før de skrives. Flere sammenhængende tomme linjer slås sammen til én. Mellemrum til sidst på linjerne fjernes. Kommentarer bevares ord for ord, inklusive deres relative position.

3

Brug resultatet

Kopiér tilbage i din editor eller download som formatted.proto. Set fra protoc er outputtet byte-for-byte ækvivalent med inputtet — kun whitespace ændres — så du kan smide det tilbage uden at bekymre dig om forskelle i wire format eller genereret kode. Verificér ved at køre protoc --descriptor_set_out=before.pb input.proto og det samme på det formaterede output: descriptors vil matche.

Hvornår det rent faktisk sparer tid

Rydde op i .proto indsat fra chat eller dokumentation

En kollega indsætter et skemafragment på Slack, indrykningen er ødelagt, og du vil have det i dit repo. Smid det herind, kopiér den formaterede version, indsæt i din fil. Hurtigere end "markér alt, gentab"-dansen i editoren.

Standardisere legacy-.proto i et gammelt repo

Du har arvet et Protobuf-repo, hvor hver fil bruger forskellig indrykning. Kør hver fil gennem denne formatter, push som én enkelt normaliserings-commit, og slå derefter buf format til i CI for at holde det sådan.

Tjekke en genereret .proto hurtigt

Nogle kodegeneratorer (JSON Schema → Protobuf, OpenAPI → Protobuf) udspytter gyldige, men grimme skemaer. Formatér outputtet, kig på det, og beslut, om du holder fast i generatoren eller retter i hånden.

Når du ikke kan installere protoc eller buf

Du sidder på en låst maskine, på et gæstenetværk, eller du reviewer bare en PR i browseren. Den browser-only formatter giver dig det samme læsbare output uden at installere Protocol Buffers-værktøjskæden.

Almindelige spørgsmål

Bliver mit skema sendt nogen steder?

Nej. Formatteren kører helt i din browser som JavaScript. Intet om skemaet — message-navne, pakkestier, kommentarer — forlader din maskine. Åbn DevTools og kig på Network-fanen, mens du indsætter; du vil se nul requests.

Bevares kommentarer?

Ja — både //-enkeltlinjekommentarer og /* ... */-blokkommentarer bliver præcis dér, hvor du satte dem. Kommentarer på deres egen linje beholder deres relative position; trailing-kommentarer i slutningen af en feltlinje hænger ved det felt. Den linjebaserede tilgang er valgt netop, så kommentarer overlever intakt.

Hvordan adskiller det sig fra buf format?

buf format parser skemaet til et syntakstræ og udskriver det igen. Det giver stærkere garantier — kanonisk option-rækkefølge, ensartet enum-store/små-bogstaver osv. — men det kræver, at skemaet parses rent. Denne formatter er linjebaseret, så den fungerer på let ødelagt input, som buf ville afvise, og den tvinger ikke en kanonisk rækkefølge. Til færdig kode: kør buf format. Til skemaer i gang med at blive redigeret eller fragmenter fra tredjepart: brug denne her.

Ændrer den skemaets semantik?

Nej — kun whitespace ændres. protoc ville producere den samme FileDescriptorProto fra både input og output. Du kan verificere med protoc --descriptor_set_out=before.pb input.proto mod det samme på den formaterede fil; de binære descriptors er identiske bortset fra eventuelle source-info-span-ændringer (det er reflection-metadata, ikke wire format).

Og indrykningsbredden — kan jeg gå væk fra 2 mellemrum?

Outputtet er fast på 2 mellemrum per krøllet-parentes-niveau, i tråd med konventionen i den officielle Protocol Buffers-stilguide. Har du brug for 4 mellemrum eller tabs, så kør outputtet gennem sed eller editorens tab-konvertering. At holde formatterens output kanonisk undgår konfigurations-drift mellem teams.

Håndterer den CRLF-linjeskift?

Ja — input-CRLF (\r\n) normaliseres til LF (\n) på vej ud. Hvis du har brug for CRLF i den gemte fil, vil din editor genkode ved gem baseret på sin linjeskift-indstilling.

Relaterede værktøjer

Hvis du arbejder med Protobuf-skemaer, passer disse godt sammen: