我刚刚开始使用Sonar,我有一个JDK 8的项目。到目前为止,唯一的问题是:
Reorder the modifiers to comply with the Java Language Specification.
这种情况发生在接口中的默认方法,例如
default boolean isValid([params here]) {
/*method body here*/
}
我知道这确实是一个小问题,但我不想禁用任何规则,那么你如何修复它呢?
非常感谢!
P.S。我在谷歌上找不到任何东西,我知道这个规则意味着什么(我已经阅读了它的描述),但我无法弄清楚如何处理默认关键字。
更新:它看起来像一个错误,我已在此处报告,https://jira.codehaus.org/browse/SONARJAVA-590 更新2 :它似乎已经修复,并且可以在2.4版本中使用。
答案 0 :(得分:5)
接口的方法声明语法包含在JLS, section 9.4。
中简而言之,方法修饰符必须位于方法标题之前,方法标题包括方法的返回类型。您的声明有一个方法修饰符default
,其返回类型为boolean
,因此除了
default boolean isValid(/*parameters*/) { /*body*/ }
因此我认为这必定是Sonar的一个错误。
答案 1 :(得分:2)
您好,感谢您的反馈。
您可以查看支票的源代码:ModifiersOrderCheck(在撰写本文时指向上次提交的链接)
您将看到default
修饰符未被检查,因为自Sonar-java-plugin支持Java 8以来未更新此规则。
所以它确实是一个bug,但它必须在java插件项目中报告,而不是在Mojo的声纳maven插件上报告。我创建了正确的票证:https://jira.codehaus.org/browse/SONARJAVA-590随意投票。