如何在 Maven 构建时强制执行代码样式检查?
特别是,我想配置 Maven 构建以使用这两个:
如何将 Maven 构建配置为因代码风格违规而失败?
当您在 pom.xml 中配置插件时,您应该能够设置failOnViolation。
编辑:
啊,我明白了...据我所知,Maven 不存在 Google Code Style 插件。我想我会考虑编写自己的 Maven 插件,它会执行类似于 checkstyle 插件的操作。
https://maven.apache.org/guides/introduction/introduction-to-plugins.html 和 https://maven.apache.org/plugins/maven-checkstyle-plugin/source-repository.html
编辑2:
我想另一种选择是找到一种方法将 IntelliJ Codestyle xml 转换为 checkstyle xml,然后使用 maven-checkstyle-plugin 根据这些规则失败。
我们可以使用 spotless 项目来实现这一点。它具有适用于基于 Maven 和 Gradle 的项目的插件。默认情况下,它使用 Google 样式格式,但允许自定义。
check
目标验证当前格式。apply
目标应用文件中的更改以符合当前样式)。查看实际效果:
user@machine repo % mvn spotless:check
[ERROR] > The following files had format violations:
[ERROR] src\main\java\com\diffplug\gradle\spotless\FormatExtension.java
[ERROR] -\t\t····if·(targets.length·==·0)·{
[ERROR] +\t\tif·(targets.length·==·0)·{
[ERROR] Run 'mvn spotless:apply' to fix these violations.
user@machine repo % mvn spotless:apply
[INFO] BUILD SUCCESS
user@machine repo % mvn spotless:check
[INFO] BUILD SUCCESS
user@machine repo % ./gradlew build
:spotlessJavaCheck FAILED
The following files had format violations:
src\main\java\com\diffplug\gradle\spotless\FormatExtension.java
-\t\t····if·(targets.length·==·0)·{
+\t\tif·(targets.length·==·0)·{
Run './gradlew spotlessApply' to fix these violations.
user@machine repo % ./gradlew spotlessApply
:spotlessApply
BUILD SUCCESSFUL
user@machine repo % ./gradlew build
BUILD SUCCESSFUL