【问题标题】:How to enforce static imports for some methods using checkstyle?如何使用 checkstyle 对某些方法强制执行静态导入?
【发布时间】:2017-05-02 19:23:22
【问题描述】:

如何使用 checkstyle 对某些方法强制执行静态导入?

例如

我希望仅从静态导入中使用以下方法:

import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;

所以这样的代码不应该被允许:

if (Objects.nonNull(varName)) {

任何想法如何使用(最好)标准或非标准工具来实现?

【问题讨论】:

  • 你将如何处理使用来自不同类的同名方法?
  • 您可以在 CheckStyle、FindBugs 或 PMD 中实现自定义规则。但是,说真的,大多数 Java 程序员(以及大多数样式指南)会认为使用这样的静态导入是不好的样式。
  • @Bohemian 这不是问题。因为我们需要强制执行 3-4 种方法,几乎​​ 0% 的机会与其他库发生冲突。
  • @StephenC 想要避免为此编写自定义解决方案。关于风格:同意 - 但现在很混乱,因为一半的开发者使用一种风格,另一半使用另一种风格。
  • @StephenC 我个人更喜欢静态导入,因为它使代码更具可读性(尤其是收集器等),但永远不会考虑强制它。

标签: java static-analysis checkstyle


【解决方案1】:

您可以禁止导入对象的字符串:

<module name="RegexpSinglelineJava">
    <!-- Please statically import methods -->
    <property name="format" value="import java.util.Objects;"/>
</module>

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 2021-05-26
    • 2018-01-07
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多