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