在 Maven 中强制执行代码风格

问题描述 投票:0回答:2

如何在 Maven 构建时强制执行代码样式检查?

特别是,我想配置 Maven 构建以使用这两个:

如何将 Maven 构建配置为因代码风格违规而失败?

java maven checkstyle
2个回答
1
投票

当您在 pom.xml 中配置插件时,您应该能够设置failOnViolation。

Maven 检查样式作为构建的一部分

编辑:

啊,我明白了...据我所知,Maven 不存在 Google Code Style 插件。我想我会考虑编写自己的 Maven 插件,它会执行类似于 checkstyle 插件的操作。

https://maven.apache.org/guides/introduction/introduction-to-plugins.htmlhttps://maven.apache.org/plugins/maven-checkstyle-plugin/source-repository.html

编辑2:

我想另一种选择是找到一种方法将 IntelliJ Codestyle xml 转换为 checkstyle xml,然后使用 maven-checkstyle-plugin 根据这些规则失败。


-1
投票

我们可以使用 spotless 项目来实现这一点。它具有适用于基于 Maven 和 Gradle 的项目的插件。默认情况下,它使用 Google 样式格式,但允许自定义。

Maven 执行

  • 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

Gradle 执行:

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
© www.soinside.com 2019 - 2024. All rights reserved.