最近我遇到了编译完全很好的代码,但是对于任何读者来说都是非常令人惊讶的,不应通过静态分析。
class BracketsAfterMethodSignature {
Object emptyArray()[] {
return new Object[]{};
}
}
我们使用CheckStyle,PMD,ErrorProne和Sonarlint,但这些工具都没有在这种构造上抱怨。是否可以启用任何规则或可以用于防止此类代码的工具?
显然CheckStyle的ArrayTypestyle不包括这种情况。
编辑
我在使用.groovy
扩展的文件上运行静态分析,Sonarlint表示此代码很好。将扩展名更改为.java后,它检测到了问题。实际上,在更新到8.18之后,CheckStyle也正确发现了它。
声纳具有规则squid:S1195数组指定器" []"应位于方法签名中的类型之后
默认情况下以Java的" Sonar Way"质量配置文件启用此规则,并将其分类为"代码气味",默认的严重性" Minor"。
因此,Sonarlint应该在问题中突出显示代码 - 在我的测试中,Eclipse -Plugin" Eclipse的Sonarlint for Eclipse"版本4.0.0.201810170711
在方法声明之后,在开放式上正确放置了标记物(在项目中没有配置的Sonarqube Server Connection,)。Eclipse版本是2018-09 (4.9.0)
。
CheckStyle的ArrayTypestyle将支持在方法定义上打印违规行为,其中括号放在方法名称上,而不是从版本8.18开始的返回类型。
请参阅https://github.com/checkstyle/checkstyle/issues/6301