在我最近的项目中,我遇到了编译完全正常的代码,但对任何读者来说都是非常令人惊讶的,不应该通过静态分析。
class BracketsAfterMethodSignature {
Object emptyArray()[] {
return new Object[]{};
}
}
我们使用Checkstyle,PMD,ErrorProne和SonarLint,但这些工具都没有抱怨这样的构造。是否有可以启用的规则或可用于阻止此类代码的工具?
显然,Checkstyle的ArrayTypeStyle不包括这种情况。
编辑
我在.groovy
扩展名的文件上运行静态分析,SonarLint说这段代码很好。将扩展名更改为.java后,它检测到了该问题。事实上,在更新到8.18之后,Checkstyle也会正确地发现它。
声纳有规则squid:S1195 Array designators "[]" should be located after the type in method signatures
默认情况下,此规则在Java的“Sonar way”质量配置文件中启用,并将其归类为“Code Smell”,默认严重性为“minor”。
因此,SonarLint应该突出显示问题中的代码 - 在我的测试中,eclipse-plugin“SonarLint for Eclipse”版本4.0.0.201810170711
在方法声明之后(在没有配置SonarQube服务器连接的项目中)正确地在开始括号处放置了一个标记。 Eclipse版本是2018-09 (4.9.0)
。
Checkstyle的ArrayTypeStyle将支持方法定义上的打印违规,其中括号放在方法名称而不是从版本8.18开始的返回类型。