【问题标题】:Configure checkstyle for method chaining?为方法链接配置检查样式?
【发布时间】:2013-02-03 02:12:06
【问题描述】:

我们的项目中包含了很多方法链流式风格的语句:

    int totalCount = ((Number) em
        .createQuery("select count(up) from UserPermission up where " +
            "up.database.id = :dbId and " +
            "up.user.id <> :currentUserId ")
        .setParameter("dbId", cmd.getDatabaseId())
        .setParameter("currentUserId", currentUser.getId())
        .getSingleResult())
        .intValue();

我的 checkstyle 主要配置为与我们现有的代码样式相匹配,但现在它在这些 sn-ps 上失败了,而是更喜欢:

    int totalCount = ((Number) em
        .createQuery("select count(up) from UserPermission up where " +
            "up.database.id = :dbId and " +
            "up.user.id <> :currentUserId ")
            .setParameter("dbId", cmd.getDatabaseId())
                .setParameter("currentUserId", currentUser.getId())
                    .getSingleResult())
                        .intValue();

这完全不合适。无论如何配置 checkstyle 以接受方法链接样式?有没有我可以从 maven 运行的替代工具来强制执行这种缩进?

【问题讨论】:

  • 我建议将当前的 checkstyle 配置添加到问题中。
  • 另外,我发现以第二种方式格式化它是非常合理的。我发现第一个版本很难阅读。
  • @Martin 第二种方式对于消息链来说是不受欢迎的,因为看起来你总是在新返回的对象上做一些事情,而有问题的对象总是相同的。想象一下另外五个链接的方法,并且在每个新方法之前都有很多空白。在第一个版本中,很明显每个新方法都从同一级别开始。 +1 所需的配置。
  • 从现在开始,我将否决任何不涉及 checkstyle 的答案。

标签: java maven checkstyle


【解决方案1】:

我从未在 Eclipse 中完成这项工作,因此我们几乎不使用 Format Source。最后,通常最好延长。我们很努力,但失败了。那是一年半前的事了。最后,我们仅在 Eclipse 中通过选择行或在手动格式化之前预格式化来使用格式化文本。

通常由工程师完成的格式化具有一定的含义。所以自动格式永远不会起作用。特别是如果你做类似的事情

public static void myMethod( int value, String value2, String value3)

如果你自动格式化它,它会像你的例子一样失败。

因此,在以人工方式格式化之前,请随时加入不使用自动格式化的俱乐部。

【讨论】:

  • 如果您从不加入行,那就可以了,这 Eclipse 中的一个设置。不过,我不知道有一个方法链接。
  • 虽然这是一篇有趣的帖子,但似乎并不是关于配置 checkstyle。
【解决方案2】:

使用 intellij ,可以通过在“方法链调用”的情况下选择“多行对齐”来完成,所以我猜这个属性在配置中配置错误。

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多