конвейер gitlab CI для проверки форматирования кода - PullRequest
2 голосов
/ 21 апреля 2020

Я хочу установить google-java-formatter для нескольких моих проектов.

Однако при фиксации кода я хочу, чтобы CI проводил проверку, было ли форматирование выполнено первым.

Я знаю, что могу выполнить sh с помощью файла .gitlab-ci.yml в моем каталоге root, но я очень не уверен, как достичь своей цели проверки правильности форматирования всех файлов, кто-нибудь может помочь мне, как вы могли бы сделать это с google-java-formatter и gitlab, пожалуйста.

1 Ответ

1 голос
/ 21 апреля 2020

google-java-formatter для форматирования кода

Поскольку google-java-formatter вносит изменения (форматирование) в код, то он изменяет код для принятия.

См. google- java -формат исходный код:

google-java-format - это программа, которая переформатирует Java исходный код в соответствии с Google Java Стиль .

Итак, вам нужен хук pre-commit.

Например, вы можете использовать pre-commit - Фреймворк для управления и поддержки многоязычных хуков pre-commit.

Пример файла, который вы можете увидеть здесь

.pre-commit-hooks.yaml:


- id: eclipse-formatter
  name: Eclipse Java Formatter
  description: This hook formats Java code with the Eclipse formatter.
  entry: eclipse-formatter
  language: python
  types:
    - java
- id: google-java-formatter
  name: Google Java Formatter
  description: This hook formats Java code with Google Java Formatter.
  entry: google-java-formatter
  language: python
  types:
    - java

Если вы хотите интегрировать git перехватывает GitLab, попробуйте создать пользовательский перехват GitLab Server

линтеры против форматеров

Как вы сказали:

при фиксации код Я хочу, чтобы линия CI проверила, было ли форматирование выполнено первым.

То, что вы спрашиваете - это checkstyle linting не formatting Итак, чтобы проверить, что форматирование уже выполнено, вы используете несколько различных линтеров.

Т.е. из этого ответа :

  • SpotBugs (ранее Findbugs ) для поиска существующих ошибок. ОЧЕНЬ ХОРОШО!
  • PMD для поиска шаблонов, которые могут привести к ошибкам (например, неиспользуемые переменные)
  • Checkstyle для обеспечения соблюдения стандартов и соглашений кодирования (например, Пробел, Javado c)
  • Ошибка склонна перехватывает прямо на этапе компиляции вашего приложения

Итак, пусть checkstyle

Там Есть много руководств по этому поводу, например: GitLab CI / CD Pipeline для приложений на основе Maven - Блог Ивана Крижсана

Также есть 250 + семплов .gitlab-ci.yml с `checkstyle.

Client_Checkstyle:
  stage: test
  script:
    - mvn checkstyle:checkstyle
    - cat checkstyle-result.xml
  allow_failure: false
...