gitlab CI 管道检查代码格式
Posted
技术标签:
【中文标题】gitlab CI 管道检查代码格式【英文标题】:gitlab CI pipeline to check for code formatting 【发布时间】:2020-08-04 05:45:15 【问题描述】:我希望在我的几个项目中安装 google-java-formatter
。
但是,在提交代码时,我希望 CI
管道检查是否首先完成了格式化。
我知道我可以在我的根目录中使用.gitlab-ci.yml
文件来完成此操作,但是我非常不确定如何实现检查所有文件是否已正确格式化的目标,谁能帮我解决这个问题请使用google-java-formatter
和gitlab
。
【问题讨论】:
如果您使用 SBT、Maven 或 Gradle,也可以使用 spotless plugin。 【参考方案1】:
google-java-formatter
用于代码格式化
由于google-java-formatter
对代码进行了修改(格式化),因此它会更改要提交的代码。
根据google-java-format源代码:
google-java-format
是一个重新格式化 Java 源代码以符合Google Java Style 的程序。
所以,你需要一个pre-commit
钩子。
例如你可以使用pre-commit - 一个用于管理和维护多语言预提交钩子的框架。
你可以看到here的示例文件
.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 hook
linters 与格式化程序
如你所说:
在提交代码时,我希望 CI 管道首先检查格式化是否已完成。
你在问什么 - 是 checkstyle linting
不是 formatting
因此,要检查格式化是否已经完成,您可以使用一些 linter。
即from this answer:
SpotBugs(之前的 Findbugs)用于查找现有错误。非常好! PMD 用于查找可能导致错误的模式(例如未使用的变量) Checkstyle 强制执行编码标准和约定(例如空格、Javadoc) Error Prone 直接挂钩到您的应用程序的编译步骤
checkstyle
linter 使用情况
这方面有很多指南,例如:GitLab CI/CD Pipeline for Maven-Based Applications – The Blog of Ivan Krizsan
另外,还有250+ samples of .gitlab-ci.yml
带有`checkstyle。
Client_Checkstyle:
stage: test
script:
- mvn checkstyle:checkstyle
- cat checkstyle-result.xml
allow_failure: false
【讨论】:
我还是有点不确定如何在 gitlab 中使用它,我将这个文件添加到我的根目录,然后管道会接收这个文件吗?如果这对答案有任何影响,我正在使用 inteliJ 添加了一些链接和.gitlab-ci.yml
的示例,请检查以上是关于gitlab CI 管道检查代码格式的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GitLab CI 的管道中将变量的值从一个作业传递到下一个作业?