【发布时间】:2014-09-02 23:43:21
【问题描述】:
我刚开始使用 Sonar,我有一个使用 JDK 8 的项目。到目前为止,我遇到的唯一问题是:
Reorder the modifiers to comply with the Java Language Specification.
这发生在我在接口中的默认方法上,比如
default boolean isValid([params here]) {
/*method body here*/
}
我知道这确实是一个小问题,但我不想禁用任何规则,那么您如何解决它?
非常感谢!
附言我在谷歌上没有找到任何东西,我知道这条规则的含义(我已经阅读了它的描述),但我不知道如何处理默认关键字。
更新:看起来像个bug,我已经在这里报告了,https://jira.codehaus.org/browse/SONARJAVA-590 更新 2:似乎已经修复,将在 2.4 版本中提供。
【问题讨论】:
-
您使用的是什么版本的声纳?你确定它支持 Java 8?
-
我正在使用 Sonar 4.3.2 和 Java 插件 2.3。我还在使用适用于 Sonar 的 Maven 插件(相同版本 2.3)运行覆盖范围。所以是的,我确定支持 Java 8。
-
不管你怎么说,我怀疑你可能正在处理一个不支持 Java 8 的版本。否则,这不仅是一个错误,而且完全是一派胡言。 Java Language Specification 中没有修饰符的顺序。它们可以按任何顺序出现。
-
JLS sec 8.4.3 推荐类的方法修饰符的特定(“习惯”)顺序,但违反此顺序并非错误。类和接口的字段声明也有类似的子句,但奇怪的是接口方法修饰符没有。我想声明一个接口方法
strictfp default而不是default strictfp可能被认为是不好的风格,尽管这很愚蠢。不过,这显然是 Sonar 检查的类型。 -
是的,但我只有默认修饰符,所以 8.4.3 秒对我没有影响。不过谢谢指出,我不知道。
标签: java java-8 sonarqube rule