【问题标题】:Maven Checkstyle and Eclipse Checkstyle report similar but different results using the same config fileMaven Checkstyle 和 Eclipse Checkstyle 使用相同的配置文件报告相似但不同的结果
【发布时间】:2016-05-09 22:12:08
【问题描述】:

我有一个使用 Tycho 构建的 Eclipse 插件代码库。它使用在指定 Checkstyle 配置名称的依赖工件中定义的父 POM。

我还使用 checkstyle 配置检查了父 pom。我已将 Eclipse 配置为使用与 Maven 构建相同的配置文件。

我发现 Maven 报告列出了 Eclipse 报告未提及的另一项违规行为。

在我正在查看的特定 Java 源文件中,Maven 报告生成了以下列表:

3: warning: Empty line should be followed by <p> tag on the next line.
8: warning: 'package' should be separated from previous statement.
26: warning: First sentence should be present.
31: warning: First sentence should be present.
34: warning: First sentence should be present.
48: warning: First sentence should be present.

对于相同的源文件,使用相同的 Checkstyle 配置文件,Eclipse 会报告除第一个警告之外的所有内容。

如果重要的话,这里是文件的前几行,包括第 3 行:

/*******************************************************************************
 * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others.  All rights reserved.
 * // line 3
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 *******************************************************************************/

具有讽刺意味的是,我无法“修复”这个警告,因为我们的项目当前为许可证文件指定了特定格式,而在下一行添加“p”违反了该格式。

无论如何,我的问题不是修复警告,而是理解为什么 Eclipse 和 Maven 使用相同的 Checkstyle 配置文件报告的违规行为不同。

据我了解,与此违规相关的类别是“JavadocParagraph”。我的 Checkstyle 配置文件包含此类别,但它不会覆盖“allowNewlineParagraph”属性。据推测,此属性的默认值为 true。这对我来说意味着 Maven 以某种方式决定将此属性设置为“false”,但 Eclpse 仍然看到默认的未指定值“true”。

【问题讨论】:

  • 您使用的是哪个版本的 Maven Checkstyle 插件?是 2.16 还是更早版本?
  • 是的,2.16。如果重要的话,Eclipse Checkstyle 插件的 6.16.0.201603042321 版本。

标签: eclipse maven checkstyle


【解决方案1】:

您似乎遇到了版本冲突。 Maven Checkstyle 插件 2.16 基于 Checkstyle 6.2,而您的 Eclipse 插件是最新的,使用 Checkstyle 6.16.1 (source)。

JavadocParagraph 检查(例如 6.2 中的 this one)进行了一些更改,这些更改将出现在 Eclipse 插件中,但不会出现在 Maven 版本中。

因此,您有 3 个选项来解决此问题:

  1. 将 Maven 插件升级到 2.17 - 这似乎是最简单的,但您仍将使用不同的版本,因此您将来可能会遇到其他问题。
  2. 将 Eclipse 插件降级到 6.2.x 版本 - 这会起作用,但会给您留下相当旧的 Checkstyle 版本。
  3. 明确指定 Checkstyle 版本(推荐)。因此,您将继续使用最新的 Eclipse Checkstyle 插件,但将 Maven 配置为使用相同版本的 Checkstyle (instructions)。

【讨论】:

  • 感谢您的澄清.. 所以这实际上意味着如果使用 Eclipse Checkstyle 插件,最好手动确保其版本和 Maven 构建中使用的 Checkstyle 核心版本始终相同?请看sourceforge.net/p/eclipse-cs/feature-requests/158
  • 没错!而且由于 Maven 和 Gradle 已经具有您为 Eclipse-CS 请求的功能,这就是我们目前可以做到的方式。
猜你喜欢
  • 2016-08-31
  • 1970-01-01
  • 2011-09-18
  • 2019-03-25
  • 2016-10-15
  • 1970-01-01
  • 2011-04-28
  • 2014-10-15
相关资源
最近更新 更多