7

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

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

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

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

编辑

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

4

2 回答 2

4

声纳有规则squid:S1195 数组指示符“[]”应该位于方法签名中的类型之后

此规则在 Java 的“Sonar way”质量配置文件中默认启用,并将其分类为“Code Smell”,默认严重性为“minor”。

因此,SonarLint 应该突出显示问题中的代码 - 在我的测试中,eclipse-plugin“SonarLint for Eclipse”版本4.0.0.201810170711在方法声明后的左括号处正确放置了一个标记(在没有配置 SonarQube 服务器连接的项目中)。Eclipse 版本是2018-09 (4.9.0).

于 2018-12-20T06:25:10.530 回答
1

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

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

于 2019-02-22T20:01:03.747 回答