Checkstyle规则以避免无条件

时间:2014-05-15 06:43:21

标签: java eclipse eclipse-plugin checkstyle

我正在使用检查方式,并且我想定义规则,例如,如果有人在not块下使用if ... else ...条件,则会显示警告。例如:

if (!employeeNotExist) { 
  // code
} else {
  // code
}

原因是只有可读性的正面条件才是好事

在checkstyle下是否有现成的模块或者需要为此编写一些自定义checkstyle规则?

2 个答案:

答案 0 :(得分:1)

我不认为此检查是在checkstyle中定义的,但您可以随时使用其中一个扩展插件,即https://github.com/sevntu-checkstyle/sevntu.checkstyle,您可以在此处找到您之后的内容:{{ 3}}。

答案 1 :(得分:1)

Checkstyle无法开箱即用。因此,如果您无法使用第三方库,则必须write a custom check。如果它有任何安慰:这将是一个非常简单的自定义检查案例。

您可以开箱即用的最好的方法是配置这样的DescendantToken检查(在Eclipse-CS中工作; DescendantToken检查是复杂的低级检查,需要了解要配置的AST,请参阅链接文档以获取更多信息):

<module name="DescendantToken">
    <property name="tokens" value="LITERAL_IF"/>
    <property name="limitedTokens" value="LNOT"/>
    <property name="minimumDepth" value="2"/>
    <property name="maximumDepth" value="2"/>
    <property name="maximumNumber" value="0"/>
    <property name="maximumMessage" value="Consider changing this to a
            positive condition for better readability."/>
</module>

这种方法有些粗糙,因为它不会检测是否存在else块,并且它还标记方法调用,例如if (!map.isEmpty())。但它涵盖了您的if (!employeeNotExist)案例。它还会标记!(a || b)之类的条件,但这些条件可以重写为!a && !b

所以,总而言之,它远非完美,但这是你最接近开箱即用的Checkstyle。