SonarQube @NoArgsConstructor(龙目岛项目)
SonarQube @NoArgsConstructor (Project Lombok)
我正在尝试在我的代码中使用 Project Lombok,我正在使用 SonarQube 和 SonarLint(在 IntelliJ IDEA 中)。
当我创建一个带有私有字段的新 class 时:
public class Test {
private String testfield;
}
然后我从 SonarQube/SonarLint "Remove this unused private field" (squid:S1068
) 得到正确的警告...(所以我知道基本配置正在工作。)
当我向字段添加 @Getter @Setter
注释时:
public class Test {
@Getter @Setter
private String testfield;
}
然后警告消失(正确!)。 (所以我知道SonarQube基本都懂Lombok注解)
现在当我像这样创建另一个 Class
public class Test2 {
public static void doSomething() {
System.out.println("hey");
}
}
我收到警告 "Add a private constructor" (squid:S1118
)...(这又是正确的和预期的)
但是当我现在像这样添加 @NoArgsConstructor
注释时
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Test2 {
public static void doSomething() {
System.out.println("hey");
}
}
警告仍然存在。
SonarQube不支持这个注解吗?
我发现了这个 JIRA issue(以及许多关于 Whosebug 的讨论,github,...),我认为它应该有效。
(我正在使用 IntellIJ 2016.1.3;SonarLint 2.2;lombok 1.16.8;SonarQube 5.5;SonarQube Java 插件 3.13.1)
有帮助吗?
编辑:截至 SonarQube Java 3.14, in "[SONARJAVA-1642] - Filter issues related to Lombok annotations with a dedicated issue filter" there is support for annotating your classes with @lombok.experimental.UtilityClass
没有触发该警告。 @NoArgsConstructor
可能需要拉取请求。
Lombok 知道 @NoArgsConstructor
但它只用它来确定一个类型是否未使用。检查实用程序 类.
的构造函数时不考虑它
+ private static final Set<String> USED_TYPES_ANNOTATIONS = new HashSet<String>(Arrays.asList(
+ "lombok.Getter",
+ "lombok.Setter",
+ "lombok.Data",
+ "lombok.Value",
+ "lombok.Builder",
+ "lombok.ToString",
+ "lombok.EqualsAndHashCode",
+ "lombok.AllArgsConstructor",
+ "lombok.NoArgsConstructor",
+ "lombok.RequiredArgsConstructor"));
我正在尝试在我的代码中使用 Project Lombok,我正在使用 SonarQube 和 SonarLint(在 IntelliJ IDEA 中)。
当我创建一个带有私有字段的新 class 时:
public class Test {
private String testfield;
}
然后我从 SonarQube/SonarLint "Remove this unused private field" (squid:S1068
) 得到正确的警告...(所以我知道基本配置正在工作。)
当我向字段添加 @Getter @Setter
注释时:
public class Test {
@Getter @Setter
private String testfield;
}
然后警告消失(正确!)。 (所以我知道SonarQube基本都懂Lombok注解)
现在当我像这样创建另一个 Class
public class Test2 {
public static void doSomething() {
System.out.println("hey");
}
}
我收到警告 "Add a private constructor" (squid:S1118
)...(这又是正确的和预期的)
但是当我现在像这样添加 @NoArgsConstructor
注释时
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Test2 {
public static void doSomething() {
System.out.println("hey");
}
}
警告仍然存在。
SonarQube不支持这个注解吗? 我发现了这个 JIRA issue(以及许多关于 Whosebug 的讨论,github,...),我认为它应该有效。
(我正在使用 IntellIJ 2016.1.3;SonarLint 2.2;lombok 1.16.8;SonarQube 5.5;SonarQube Java 插件 3.13.1)
有帮助吗?
编辑:截至 SonarQube Java 3.14, in "[SONARJAVA-1642] - Filter issues related to Lombok annotations with a dedicated issue filter" there is support for annotating your classes with @lombok.experimental.UtilityClass
没有触发该警告。 @NoArgsConstructor
可能需要拉取请求。
Lombok 知道 @NoArgsConstructor
但它只用它来确定一个类型是否未使用。检查实用程序 类.
+ private static final Set<String> USED_TYPES_ANNOTATIONS = new HashSet<String>(Arrays.asList(
+ "lombok.Getter",
+ "lombok.Setter",
+ "lombok.Data",
+ "lombok.Value",
+ "lombok.Builder",
+ "lombok.ToString",
+ "lombok.EqualsAndHashCode",
+ "lombok.AllArgsConstructor",
+ "lombok.NoArgsConstructor",
+ "lombok.RequiredArgsConstructor"));