[英]SonarQube @NoArgsConstructor (Project Lombok)
我正在嘗試在我的代碼中使用Project Lombok,我正在使用SonarQube和SonarLint(在IntelliJ IDEA中)。
當我用這樣的私有字段創建一個新類時:
public class Test {
private String testfield;
}
然后我從SonarQube / SonarLint那里得到了正確的警告“刪除這個未使用的私有字段”( squid:S1068
)...(所以我知道基本配置正在運行。)
當我將@Getter @Setter
注釋添加到字段時:
public class Test {
@Getter @Setter
private String testfield;
}
然后警告消失(正確!)。 (所以我知道SonarQube基本上理解Lombok注釋。)
現在當我創建另一個這樣的類時
public class Test2 {
public static void doSomething() {
System.out.println("hey");
}
}
我收到警告“添加一個私有構造函數”( squid:S1118
)......(這又是正確的和預期的)
但是當我現在添加像這樣的@NoArgsConstructor
注釋時
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Test2 {
public static void doSomething() {
System.out.println("hey");
}
}
警告仍然存在。
SonarQube不支持此注釋嗎? 我發現了這個JIRA問題 (以及關於stackoverflow,github等的許多討論),我認為它應該可行。
(我正在使用IntellIJ 2016.1.3; SonarLint 2.2; lombok 1.16.8; SonarQube 5.5; SonarQube Java插件3.13.1)
任何幫助?
編輯:從SonarQube Java 3.14開始 ,在“[ SONARJAVA-1642 ] - 使用專用的問題過濾器過濾與Lombok注釋相關的問題”,支持使用@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"));
拉票請求 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.