Linter rulesProtobufmessage-naming

message-naming

Since 0.9.0

This rule checks whether the name of every message of a Protobuf file is in PascalCase.

Rule Details

PascalCase message names match the type naming conventions of most target languages, and are what the Protobuf style guide recommends.

The message-naming rule checks every message, including nested messages, and reports Message name '<name>' should be PascalCase for every name that is not in PascalCase. A name is in PascalCase when it starts with an upper-case letter and contains only letters and digits, such as PetOwner (acronyms such as HTTPServer are accepted).

When the name converted to PascalCase differs from the original and is itself valid, the message ends with a suggestion, for example , e.g. '<converted>'. To convert a name, it is split into words at underscores and other separators, at lower-to-upper case changes and before the last capital of an acronym, and the words are capitalized and joined, so pet_owner becomes PetOwner.

Configuration

This rule has no options.

Examples

Good.

syntax = "proto3";

package acme.pets.v1;

message PetOwner {
  string name = 1;
}

Bad. The linter reports Message name 'pet_owner' should be PascalCase, e.g. 'PetOwner'.

syntax = "proto3";

package acme.pets.v1;

message pet_owner {
  string name = 1;
}

When Not to Use It

You may disable this rule if the names are part of an existing API that you cannot rename. To allow a single message, add an // apigenie-lint-disable message-naming comment to it.

Compatibility

This rule is compatible with proto3 files. proto2 and editions files are rejected by the reader and are not linted.

Related rules