Linter rulesProtobufservice-comment-defined

service-comment-defined

Since 0.9.0

This rule checks whether every service of a Protobuf file has a leading comment.

Rule Details

Comments are the documentation of a Protobuf API: protoc passes them to the code generators, which copy them to the generated code, and documentation generators render them.

The service-comment-defined rule checks every service, and reports Service '<name>' has no leading comment when there is no leading comment, or when it contains only whitespace. A leading comment is the comment right before the declaration, as protoc attaches it: a comment separated from the declaration by a blank line is a detached comment, and a comment after the declaration on the same line is a trailing comment; neither counts. Both // and /* */ comments count.

Configuration

This rule has no options.

Examples

Good.

syntax = "proto3";

package acme.pets.v1;

// Manages the pets of the shelter.
service PetService {
  rpc GetPet(GetPetRequest) returns (GetPetResponse);
}

message GetPetRequest {
  string name = 1;
}

message GetPetResponse {
  string name = 1;
}

Bad. The linter reports Service 'PetService' has no leading comment.

syntax = "proto3";

package acme.pets.v1;

service PetService {
  rpc GetPet(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 services of your files are documented elsewhere, or if their names are descriptive enough. Lines with an apigenie-lint-disable directive do not count as documentation: a leading comment made only of directives does not satisfy the rule.

Compatibility

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

Related rules