Linter rulesProtobufrpc-naming

rpc-naming

Since 0.9.0

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

Rule Details

RPC names become method names in the generated code and appear in the paths of gRPC requests (/acme.pets.v1.PetService/GetPet). PascalCase is what the Protobuf style guide recommends, and the rpc-request-standard-name and rpc-response-standard-name rules derive the names of the request and response types from them.

The rpc-naming rule checks every RPC of every service, and reports RPC 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;

service PetService {
  rpc GetPet(GetPetRequest) returns (GetPetResponse);
}

message GetPetRequest {
  string name = 1;
}

message GetPetResponse {
  string name = 1;
}

Bad. The linter reports RPC name 'get_pet' should be PascalCase, e.g. 'GetPet'.

syntax = "proto3";

package acme.pets.v1;

service PetService {
  rpc get_pet(GetPetRequest) returns (GetPetResponse);
}

message GetPetRequest {
  string name = 1;
}

message GetPetResponse {
  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 RPC, add an // apigenie-lint-disable rpc-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