在 IntellyJ Idea 中,我安装了 SonarLint。
代码分析器说我必须从此注释组中删除“NamedEntityGraphs”包装器。这是我的代码:
@NamedEntityGraphs({
@NamedEntityGraph(
name = Application.ONLY_NAME,
attributeNodes = {
@NamedAttributeNode("foo"),
@NamedAttributeNode("bar")
}
),
@NamedEntityGraph(name = Application.FULL,
attributeNodes = {
@NamedAttributeNode("foo"),
@NamedAttributeNode("bar"),
@NamedAttributeNode("buzz")
}
)
})
public class SomeClass { ... }
以下是 SonarLint 的论点:
注解重复不应该被包裹 代码异味,Minor,java:S1710
在 Java 8 之前,如果您需要使用同一注解的多个实例,则必须将它们包装在容器注解中。在 Java 8 中,这不再是必要的,允许更清晰、更易读的代码。请注意,当项目的 sonar.java.source 低于 8 时,此规则会自动禁用。
不合规代码示例
@SomeAnnotations({ // Noncompliant
@SomeAnnotation(..a..)
@SomeAnnotation(..b..)
@SomeAnnotation(..c..)
})
public class SomeClass { ... }
合规解决方案
@SomeAnnotation(..a..)
@SomeAnnotation(..b..)
@SomeAnnotation(..c..)
public class SomeClass { ... }
问题:
是否有人知道如何组织@NamedEntityGraphs 以获得兼容的代码?