Inmatning (.proto-schema)

Utdata (valideringsrapport)

Vad det här verktyget gör

Du sparar en Protocol Buffers-fil, kör protoc eller buf, och bygget dör med ett kryptiskt rad/kolumn-fel. Den här validatorn parsar din .proto med samma regler som en strikt kompilator använder och säger vad som är fel — i klartext, innan du commitar och CI-pipen plockar upp det åt dig.

Utöver "gick det att parsa?" kör verktyget också en lint-runda med kontroller som specen faktiskt kräver: fältnummer måste ligga i 1..536870911, intervallet 19000..19999 är reserverat internt av Google, varje fältnummer i ett message måste vara unikt, och fältnamn får inte upprepas. Det är de här överträdelserna som ger riktiga build-fel, och validatorn lyfter upp alla på en gång istället för ett-i-taget som kompilatorn gör.

Allt körs i din webbläsare — din .proto, dina message-namn och dina package-paths lämnar aldrig din maskin. Parsern hanterar syntax-/package-/import-direktiv, rad- och blockkommentarer, nästade message- och enum-block, oneof, map<K, V>, repeated, optional, services (hoppas över) och field options. Byggd för samma flöde som den officiella proto3-språkguiden.

Så använder du det

Tre steg, körs medan du skriver. Output-editorn uppdateras ~300 ms efter att du slutar skriva.

1

Klistra in ditt .proto-schema

Släpp schemat i den vänstra editorn — en enda fil, hur lång som helst. syntax = "proto3"; överst är okej men frivilligt. Parsern hanterar import-statements (men hoppar över dem — upplösning över filer ligger utanför scope här; klistra in importerade messages inline om du vill validera dem). Alla kommentarer plockas bort innan parsning.

Om din editor lägger till smarta citattecken vid inklistring kan validatorn flagga ett tokeniseringsfel. Ta bort dem eller klistra in från en ren textkälla.

2

Läs rapporten

Till höger: en grön bock om schemat är rent, en lista med problem annars. Varje problem pekar på exakt message och fält, så du fixar i din editor utan att grepa. Rapporten summerar också antal messages, antal enums och totalt antal fält.

3

Fixa och klistra in igen

Tillämpa fixen i din editor, klistra in det uppdaterade schemat. Output omvalideras på under en sekund. Ingen omladdning, ingen rebuild, ingen väntan på att CI ska komma tillbaka röd. När schemat är rent kan du kopiera rapporten till en PR-kommentar om du vill ha en notering om valideringen.

När det faktiskt sparar tid

Fånga fel innan du pushar till CI

Ditt team kör buf lint i CI. Att validera lokalt först betyder att du inte pushar, väntar, ser rött, fixar och pushar igen — hela cykeln krymper till en flik i webbläsaren.

Granska en kollegas Protobuf-PR

Du granskar en schema-ändring men har inte protoc-toolchainen uppsatt lokalt. Klistra in den nya .proto här, kolla att den är strukturellt ren och lämna en fokuserad review istället för "ser bra ut, kör".

Migrera från proto2 till proto3

Gamla schema använder ofta required (borta i proto3) eller har fältnummer som ser okej ut tills du kollar. Validatorn flaggar dubbletter och nummer utanför intervall i en pass, vilket går snabbare än att läsa 800 rader .proto för hand.

Validera en .proto från ett code-gen-verktyg

Generatorer (t.ex. JSON Schema → Protobuf, OpenAPI → Protobuf) producerar ibland schema med edge-case-fel — dubbla fältnummer, träffar i det reserverade intervallet. Kör outputen genom validatorn innan du litar på den.

Vanliga frågor

Skickas mitt .proto-schema till någon server?

Nej. Parsern och lint-kontrollerna körs helt i din webbläsare som JavaScript. Öppna DevTools och titta på Network-fliken medan du klistrar in — noll requests. Användbart för schema som innehåller interna typnamn, package-paths eller annat du inte skulle vilja skicka till en tredjepartsvalidator.

Vad kontrollerar lint-passet egentligen?

Fältnummer måste vara i 1..536870911 (förutom Google-reserverade 19000..19999), varje fältnummer i ett message måste vara unikt, och varje fältnamn i ett message måste vara unikt. Allt som faller på någon av dessa rapporteras med exakt message.field-sökväg. Parse-steget faller också på saknade semikolon, oparade måsvingar, oväntade tokens m.m.

Validerar det mot proto3-specen eller proto2?

Det accepterar båda syntaxerna (proto3 default-zero, proto2 required/optional-kvalificerare osv.). Lint-kontrollerna är spec-definierade och gäller båda. De striktaste kontrollerna typ "inget required i proto3" tvingas inte fram här — det fångar protoc själv.

Varför flaggas mitt fältnummer 19000?

Intervallet 19000..19999 är reserverat internt av Google för Protocol Buffers-implementationen. Om du ger ett fältnummer i det intervallet kommer riktiga protoc neka schemat. Validatorn fångar det tidigt så att du får veta från det här verktyget istället för från ett förvirrat build-fel.

Följer det imports?

Nej. import-statements känns igen och hoppas över — message-typer i andra filer löser sig som "unknown" och valideras inte. Behöver du validera ett message som beror på importerade typer, klistra in de importerade messages i samma indata.

Hur stort schema klarar det?

Tiotusentals rader utan problem. Valideringen är lokal, ingen uppladdning, ingen rate limit, ingen rundgång över nätet — klistra in hela repot om du vill, gränsen är webbläsarens minne.

Relaterade verktyg

Om du jobbar med Protobuf och JSON passar de här bra ihop: