Entrée (schéma .proto)

Sortie (.proto formaté)

Ce que fait cet outil

Vous collez un schéma Protocol Buffers avec une indentation mélangée, des déclarations de champs collées les unes aux autres ou des lignes vides aléatoires héritées d’un copier-coller, et vous voulez qu’il ressemble au reste du dépôt. Ce formateur réécrit le fichier avec une indentation de deux espaces par niveau d’accolade, exactement un espace autour de =, un espace après ,, et au plus une ligne vide consécutive entre les blocs. Les commentaires — aussi bien les commentaires de ligne // que les commentaires de bloc /* ... */ — restent exactement là où vous les avez mis.

Il ne parse ni ne valide le schéma, ce qui veut dire qu’il fonctionne sur des entrées légèrement cassées là où buf format ou le « Format Document » de votre éditeur risquent d’échouer. Si votre .proto contient une erreur de syntaxe quelque part, le reste du fichier est quand même formaté autour. La contrepartie : il ne peut pas réordonner les champs, normaliser l’ordre des imports ni retirer les options inutilisées comme le ferait un vrai formateur basé sur un parser. Pour ça, lancez buf format dans votre pipeline de build.

Tout tourne dans votre navigateur — pas d’upload, pas de rate limit, aucun schéma envoyé où que ce soit. Pratique quand le schéma contient des noms de package internes, des noms de types ou n’importe quoi que vous ne voudriez pas envoyer à une API tierce. Fonctionne sur n’importe quel fichier que votre navigateur peut tenir en mémoire ; même des dizaines de milliers de lignes se formatent en bien moins d’une seconde.

Comment l’utiliser

Trois étapes. La sortie se met à jour environ 300 ms après l’arrêt de la frappe.

1

Collez votre schéma .proto

Déposez le schéma dans l’éditeur de gauche. syntax, package, directives import, blocs message, enum imbriqués, oneof, map<K, V> — tout est géré. Les fins de ligne mélangées (CRLF) sont normalisées en LF en sortie.

Le formateur ne réordonne rien — les champs, les imports et les options restent dans l’ordre où vous les avez écrits. Si vous voulez un ordre canonique, lancez buf format derrière.

2

Lisez la sortie formatée

À droite : le même schéma, indenté de 2 espaces par niveau de {. Les lignes commençant par } sont désindentées avant émission. Les lignes vides consécutives sont fusionnées en une seule. L’espace en fin de ligne est supprimé. Les commentaires sont préservés à la lettre, position relative incluse.

3

Utilisez le résultat

Recopiez-le dans votre éditeur ou téléchargez-le sous formatted.proto. La sortie est strictement équivalente à l’entrée du point de vue de protoc — seuls les espaces changent — vous pouvez donc la remettre en place sans vous soucier du format wire ou du code généré. Vérifiez en lançant protoc --descriptor_set_out=before.pb input.proto et la même chose sur la sortie formatée : les descripteurs seront identiques.

Quand ça fait gagner du temps

Nettoyer un .proto collé depuis un chat ou de la doc

Un collègue colle un fragment de schéma sur Slack, l’indentation est massacrée, vous voulez le mettre dans votre dépôt. Déposez-le ici, copiez la version formatée, collez-la dans votre fichier. Plus rapide que le « tout sélectionner, retabuler » dans votre éditeur.

Standardiser des .proto legacy dans un vieux dépôt

Vous héritez d’un dépôt Protobuf où chaque fichier utilise une indentation différente. Passez chaque fichier dans ce formateur, poussez en un seul commit de normalisation, puis activez buf format en CI pour que ça reste comme ça.

Vérifier rapidement un .proto généré

Certains générateurs de code (JSON Schema → Protobuf, OpenAPI → Protobuf) produisent des schémas valides mais moches. Formatez la sortie, jetez-y un œil, décidez si vous gardez le générateur ou si vous éditez à la main.

Quand vous ne pouvez pas installer protoc ou buf

Vous êtes sur une machine verrouillée, sur un réseau invité, ou vous reviewez juste une PR depuis le navigateur. Le formateur 100 % navigateur vous donne la même sortie lisible sans installer la chaîne d’outils Protocol Buffers.

Questions courantes

Mon schéma est-il envoyé quelque part ?

Non. Le formateur tourne entièrement dans votre navigateur en JavaScript. Rien du schéma — noms de message, chemins de package, commentaires — ne quitte votre machine. Ouvrez les DevTools et regardez l’onglet Network pendant que vous collez ; vous verrez zéro requête.

Est-ce qu’il préserve les commentaires ?

Oui — les commentaires // sur une ligne et les commentaires de bloc /* ... */ restent exactement là où vous les avez mis. Les commentaires sur leur propre ligne gardent leur position relative ; les commentaires en fin de ligne de champ restent attachés à ce champ. L’approche par lignes a été choisie justement pour que les commentaires survivent tels quels.

Quelle différence avec buf format ?

buf format parse le schéma dans un arbre syntaxique et le ré-émet. Ça donne des garanties plus fortes — ordre canonique des options, casse cohérente des enums, etc. — mais ça oblige le schéma à parser proprement. Ce formateur est basé sur les lignes, donc il fonctionne sur des entrées légèrement cassées que buf refuserait, et il n’impose pas d’ordre canonique. Pour du code finalisé, lancez buf format. Pour des schémas en cours d’édition ou des fragments tiers, prenez celui-ci.

Est-ce qu’il change la sémantique du schéma ?

Non — seuls les espaces changent. protoc émettrait le même FileDescriptorProto à partir de l’entrée et de la sortie. Vous pouvez vérifier avec protoc --descriptor_set_out=before.pb input.proto contre le même sur le fichier formaté ; les descripteurs binaires sont identiques, sauf pour d’éventuels changements de span dans la source-info (qui sont des métadonnées de réflexion, pas du format wire).

Et la largeur d’indentation — puis-je passer de 2 espaces à autre chose ?

La sortie est fixée à 2 espaces par niveau d’accolade, en accord avec la convention du guide de style officiel Protocol Buffers. Si vous avez besoin de 4 espaces ou de tabs, faites passer la sortie dans sed ou dans la conversion de tabs de votre éditeur. Garder la sortie du formateur canonique évite la dérive de configuration entre équipes.

Gère-t-il les fins de ligne CRLF ?

Oui — l’entrée CRLF (\r\n) est normalisée en LF (\n) en sortie. Si vous avez besoin de CRLF dans le fichier sauvegardé, votre éditeur ré-encodera à la sauvegarde selon son réglage de fins de ligne.

Outils associés

Si vous travaillez avec des schémas Protobuf, ces outils s’associent bien :