【问题标题】:Allow single-line accessor (getter/setter) syntax with Checkstyle使用 Checkstyle 允许单行访问器(getter/setter)语法
【发布时间】:2010-04-30 09:41:28
【问题描述】:

我们希望拥有使用单行语法的普通 Java 属性访问器,因此它们占用的空间要少得多,并且更具可读性(就快速“查看”访问器集而言)。但是我们确实希望对我们的 checkstyle 配置中的所有其他内容强制执行多行方法语法。但我不确定如何在 Checkstyle 配置中为访问器设置此异常,并怀疑这可能是不可能的。

所以我们希望我们的访问器看起来像这样:

public String getFoo() { return foo; }
public void setFoo(String foo) { this.foo = foo; }

[事实上,我们宁愿根本没有琐碎的访问器,而只是用 @Property 或其他东西注释私有成员变量,并为我们生成访问器,因为编写无穷无尽的 get 和 set 代码并没有真正的好处,但就这个问题而言,这是一种普遍的 Java 挫败感。]

【问题讨论】:

  • 我猜你已经看过 Lombok 项目来回答最后一段......
  • 或春袋鼠,就此而言
  • 我更喜欢使用自动代码格式化程序来解决这个问题。这样开发人员就不必考虑它了。

标签: java checkstyle accessor


【解决方案1】:

如果您想使用 Checkstyle 解决此问题,则必须编写一个或多个自定义检查。您的支票将是您正在修改的支票的子类。然后,对于所有受影响的检查,您可以将自己的子类检查输入到 checkstyle 配置中(并删除原始检查)。

您也许可以从 JavadocMethodCheck 中蚕食一些代码,它已经检测到琐碎的访问器。这听起来工作量很大,但代码并不多,因为您在子类中所做的修改总是相同的,因此可以放入辅助类中。

老实说,我不认为 Checkstyle 可以开箱即用,抱歉!

【讨论】:

    【解决方案2】:

    我建议使用 SuppressionCommentFilter 禁用 Checkstyle 检查代码块。

    然后可以执行以下操作来关闭 Checkstyle,如下所示:

    // CHECKSTYLE_OFF: ALL
    public String getFoo() { return foo; }
    public void setFoo(String foo) { this.foo = foo; }
    // CHECKSTYLE_ON: ALL
    

    【讨论】:

    • 不利的一面是,如果有一天某个访问器变得不平凡,checkstyle 将继续忽略它。
    猜你喜欢
    • 2016-04-06
    • 2011-06-26
    • 2018-05-27
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2012-09-26
    相关资源
    最近更新 更多