Protolinter - это инструмент командной строки для проверки и анализа файлов Protocol Buffer на соответствие лучшим практикам и стандартам разработки.
Он дает разработчикам возможность обеспечить правильность структуры файлов Protocol Buffer.
- Проверка файлов Protocol Buffer на соответствие стандартам разработки.
- Настраивается через конфигурационный файл
.protolinter.yaml. - Исключение конкретных проверок и дескрипторов в соответствии с вашими потребностями.
- Создание конфигурации с исключенными элементами Protocol Buffer.
Вы можете установить Protolinter с помощью команды go install:
go install github.com/oshokin/protolinter@latestКроме того, вы можете скомпилировать исполняемый файл, используя предоставленный Makefile:
make buildСкомпилированный исполняемый файл будет находиться в подкаталоге bin.
# Проверка и анализ файлов protobuf
protolinter check [--config=<путь>] [--mimir] <file.proto>
# Генерация и вывод в консоль файла конфигурации
# с полными именами элементов protobuf, где были обнаружены ошибки при проверке
protolinter print-config [--config=<path>] <file.proto>Protolinter поддерживает настройку через файл .protolinter.yaml.
Если файл конфигурации отсутствует, Protolinter будет работать с настройками по умолчанию, выполняя все проверки и не исключая ни одного proto-дескриптора из анализа.
Вы можете определить исключенные проверки и дескрипторы для настройки анализа согласно потребностям вашего проекта.
Пример файла конфигурации можно найти в .protolinter.example.yaml.
Кроме того, вы можете сгенерировать файл конфигурации с помощью следующей команды:
protolinter print-config -m mimir.yaml > .protolinter.yamlВ корне данного проекта размещены два файла для удобства разработчика:
Makefile.example - это пример файла Makefile.
.gitlab-ci.example.yaml - это пример Gitlab CI/CD задания для protolinter.
Вы можете скопировать эти файлы в ваш проект и отредактировать их под свои нужды.
Protolinter выполняет различные проверки ваших файлов Protocol Buffer.
Следующие проверки могут быть исключены из анализа в файле конфигурации:
enum_value_has_comments: Проверяет, есть ли ведущие комментарии у значения перечисления.field_description_ends_with_dot_or_question_mark: Проверяет, заканчивается ли описание поля точкой или знаком вопроса.field_description_starts_with_capital: Проверяет, начинается ли описание поля с заглавной буквы.field_has_correct_json_name: Проверяет, правильно ли указан тег JSON-имени для поля.field_has_no_description: Проверяет, есть ли описание у поля.field_name_is_snake_case: Проверяет, задано ли имя поля в формате snake_case.method_has_body_tag: Проверяет, правильно ли у методов с обязательным телом указан тег тела.method_has_correct_input_name: Проверяет, правильно ли назван входной параметр метода.method_has_default_error_response: Проверяет, указан ли формат ошибки по умолчанию в описании Swagger для метода.method_has_http_path: Проверяет, указан ли HTTP-путь для метода.method_has_swagger_description: Проверяет, имеется ли допустимое описание Swagger для метода.method_has_swagger_summary: Проверяет, имеется ли допустимое краткое описание Swagger для метода.method_has_swagger_tags: Проверяет, имеются ли соответствующие теги Swagger для метода.method_has_version: Проверяет, указана ли версия для метода.