在Java代码中禁止方法签名后使用括号

问题描述 投票:6回答:2

在我最近的项目中,我遇到了编译完全正常的代码,但对任何读者来说都是非常令人惊讶的,不应该通过静态分析。

class BracketsAfterMethodSignature {
  Object emptyArray()[] {
    return new Object[]{};
  }
}

我们使用Checkstyle,PMD,ErrorProne和SonarLint,但这些工具都没有抱怨这样的构造。是否有可以启用的规则或可用于阻止此类代码的工具?

显然,Checkstyle的ArrayTypeStyle不包括这种情况。

编辑

我在.groovy扩展名的文件上运行静态分析,SonarLint说这段代码很好。将扩展名更改为.java后,它检测到了该问题。事实上,在更新到8.18之后,Checkstyle也会正确地发现它。

java checkstyle pmd sonarlint errorprone
2个回答
3
投票

声纳有规则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)


1
投票

Checkstyle的ArrayTypeStyle将支持方法定义上的打印违规,其中括号放在方法名称而不是从版本8.18开始的返回类型。

https://github.com/checkstyle/checkstyle/issues/6301

© www.soinside.com 2019 - 2024. All rights reserved.