我正在使用检查方式,并且我想定义规则,例如,如果有人在not
块下使用if ... else ...
条件,则会显示警告。例如:
if (!employeeNotExist) {
// code
} else {
// code
}
原因是只有可读性的正面条件才是好事
在checkstyle下是否有现成的模块或者需要为此编写一些自定义checkstyle规则?
答案 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。