Java 代码中的方法签名后禁止括号
Prohibit brackets after method signature in Java code
在我最近的项目中,我遇到了可以完美编译的代码,但是对于任何人来说都是非常令人惊讶的 reader 并且不应该通过静态分析。
class BracketsAfterMethodSignature {
Object emptyArray()[] {
return new Object[]{};
}
}
我们使用 Checkstyle、PMD、ErrorProne 和 SonarLint,但这些工具中的 none 抱怨这种构造。是否有任何可启用的规则或可用于防止此类代码的工具?
显然 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 将支持方法定义的打印违规,其中方括号放在方法名称上,而不是 return 从 8.18 版开始的类型。
在我最近的项目中,我遇到了可以完美编译的代码,但是对于任何人来说都是非常令人惊讶的 reader 并且不应该通过静态分析。
class BracketsAfterMethodSignature {
Object emptyArray()[] {
return new Object[]{};
}
}
我们使用 Checkstyle、PMD、ErrorProne 和 SonarLint,但这些工具中的 none 抱怨这种构造。是否有任何可启用的规则或可用于防止此类代码的工具?
显然 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 将支持方法定义的打印违规,其中方括号放在方法名称上,而不是 return 从 8.18 版开始的类型。