Input (.proto-skema)

Output (valideringsrapport)

Hvad værktøjet gør

Du gemmer en Protocol Buffers-fil, kører protoc eller buf, og buildet dør med en kryptisk linje/kolonne-fejl. Denne validator parser din .proto efter de samme regler, som en streng compiler bruger, og siger i klart sprog hvad der er galt — før du committer og CI-pipen samler det op for dig.

Ud over "blev det parset?" kører værktøjet også et lint-pass med de tjek, specen rent faktisk kræver: feltnumre skal være i 1..536870911, intervallet 19000..19999 er reserveret internt af Google, hvert feltnummer i et message skal være unikt, og feltnavne må ikke gentage sig. Det er disse overtrædelser, der giver de rigtige build-fejl, og validatoren henter dem alle frem på én gang i stedet for én ad gangen som compileren gør.

Alt kører i din browser — din .proto, dine message-navne og dine package-stier forlader aldrig din maskine. Parseren håndterer syntax-/package-/import-direktiver, linje- og blok-kommentarer, indlejrede message- og enum-blokke, oneof, map<K, V>, repeated, optional, services (springes over) og field options. Bygget til samme workflow som den officielle proto3-sprogguide.

Sådan bruger du det

Tre trin, kører mens du skriver. Output-editoren opdaterer ~300 ms efter du holder op med at skrive.

1

Indsæt dit .proto-skema

Smid skemaet ind i editoren til venstre — én fil, uanset længde. syntax = "proto3"; i toppen er fint, men valgfrit. Parseren genkender import-statements (de springes over — opløsning på tværs af filer er ikke i scope her; indsæt importerede messages inline, hvis de skal valideres med). Alle kommentarer fjernes før parsing.

Hvis din editor sætter "smarte" anførselstegn ind ved indsættelse, kan validatoren flage en tokeniseringsfejl. Fjern dem eller indsæt fra en ren tekstkilde.

2

Læs rapporten

Til højre: et grønt flueben hvis skemaet er rent, ellers en liste med problemer. Hvert problem peger på den eksakte message og det eksakte felt, så du retter i din editor uden at greppe. Rapporten opsummerer også antal messages, antal enums og samlet antal felter.

3

Ret og indsæt igen

Lav rettelsen i din editor, indsæt det opdaterede skema. Outputtet revalideres på under et sekund. Ingen reload, intet rebuild, ingen ventetid på at CI kommer rød tilbage. Når skemaet er rent, kan du kopiere rapporten ind i en PR-kommentar, hvis du vil have en notering af valideringen.

Hvornår det faktisk sparer tid

Fang fejl inden du pusher til CI

Dit team kører buf lint i CI. Validerer du først lokalt, slipper du for push, vente, se rødt, rette og pushe igen — hele cyklussen falder sammen til én browserfane.

Reviewe en Protobuf-PR fra en kollega

Du reviewer en skema-ændring, men har ikke protoc-toolchainen kørende lokalt. Indsæt den nye .proto her, se om den er strukturelt ren, og efterlad en fokuseret review i stedet for "ser fint ud, ship it".

Migrere fra proto2 til proto3

Gamle skemaer bruger ofte required (væk i proto3) eller har feltnumre, der ser fine ud, indtil du tjekker. Validatoren markerer dubletter og out-of-range-numre i én gennemgang, hvilket er hurtigere end at læse 800 linjer .proto i hånden.

Validere en .proto genereret af et code-gen-værktøj

Generatorer (f.eks. JSON Schema → Protobuf, OpenAPI → Protobuf) laver indimellem skemaer med edge-case-fejl — dublerede feltnumre, ramt det reserverede interval. Send outputtet gennem validatoren, før du stoler på det.

Almindelige spørgsmål

Bliver mit .proto-skema sendt til en server?

Nej. Parseren og lint-tjekkene kører fuldt ud i din browser som JavaScript. Åbn DevTools og hold øje med Network-fanen mens du indsætter — nul requests. Brugbart for skemaer med interne typenavne, package-stier eller hvad som helst, du ikke ville sende til en tredjeparts-validator.

Hvad tjekker lint-passet rent faktisk?

Feltnumre skal være i 1..536870911 (eksklusive det Google-reserverede interval 19000..19999), hvert feltnummer i et message skal være unikt, og hvert feltnavn i et message skal være unikt. Alt der falder på én af dem, rapporteres med præcis message.field-sti. Parse-trinnet fejler også på manglende semikolonner, ikke-parrede tuborgklammer, uventede tokens osv.

Validerer det mod proto3-specen eller proto2?

Det accepterer begge syntakser (proto3 default-zero, proto2 required/optional-kvalifikatorer osv.). Lint-tjekkene er defineret af specen og gælder for begge. De strengeste tjek som "intet required i proto3" håndhæves ikke her — det fanger protoc selv.

Hvorfor markeres mit feltnummer 19000?

Intervallet 19000..19999 er reserveret internt af Google til brug i Protocol Buffers-implementationen. Tildeler du et feltnummer i det interval, afviser ægte protoc skemaet. Validatoren fanger det tidligt, så du opdager det fra dette værktøj i stedet for en forvirret build-fejl.

Følger det imports?

Nej. import-statements genkendes og springes over — message-typer i andre filer løses som "unknown" og valideres ikke. Skal du validere et message, der afhænger af importerede typer, så indsæt de importerede messages i samme input.

Hvor stort et skema kan det klare?

Titusindvis af linjer uden problemer. Validering sker lokalt, ingen upload, ingen rate limit, ingen netværks-rundtur — indsæt hele repoet hvis du vil, grænsen er din browsers hukommelse.

Relaterede værktøjer

Hvis du arbejder med Protobuf og JSON, går disse godt i spænd: