Linter rulesProtobufenum-naming
enum-naming
Since 0.9.0
This rule checks whether the name of every enum of a Protobuf file is in PascalCase.
Rule Details
PascalCase enum names match the type naming conventions of most target languages, and are what
the Protobuf style guide recommends. The enum-value-prefix rule derives the expected prefix of
the values from the enum name.
The enum-naming rule checks every enum, including enums nested in messages, and reports Enum 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;
enum PetKind {
PET_KIND_UNSPECIFIED = 0;
PET_KIND_DOG = 1;
}
Bad. The linter reports Enum name 'pet_kind' should be PascalCase, e.g. 'PetKind'.
syntax = "proto3";
package acme.pets.v1;
enum pet_kind {
PET_KIND_UNSPECIFIED = 0;
PET_KIND_DOG = 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 enum, add an // apigenie-lint-disable enum-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.