[英]Find usages of lombok generated getter/setter in Intellij
[英]How to tell to lombok the generated getter is an @Override
我在我的項目中使用 lombok 並且我有一個界面:
public interface MyInterface{
Object getA()
}
還有一個班
@Getter
public class MyClass implements MyInterface{
private Object a;
private Object b
}
而且我檢查了生成的類,類中生成的方法不是@Override
我想知道如何添加此注釋? 缺少@Override
的后果是什么?
這可能是另一個問題,但此代碼由聲納分析,聲納說從未使用過私有字段 a。
我已經看過關於sonarqube + lombok = 誤報的主題
但在我的情況下, b 不會產生誤報。 所以我不認為這有直接關系
您是否看到無需重新實現 getA() 即可避免此問題的解決方案?
您可以使用注釋的onMethod
屬性將您想要的任何注釋添加到生成的方法中。
@Getter
public class MyClass implements MyInterface{
@Getter(onMethod = @__(@Override))
private Object a;
private Object b
}
在這種情況下,作為風格問題,我可能會將類級別的@Getter
移動到另一個字段。 如果有c
, d
, e
都應該使用正常(無注釋)@Getter 邏輯,我會保留如上。
public class MyClass implements MyInterface{
@Getter(onMethod = @__(@Override))
private Object a;
@Getter
private Object b
}
您可能還想啟用 Lombok 的生成注釋。 它將防止某些工具(覆蓋、靜態分析等)打擾檢查 Lombok 的方法。 不確定在這種情況下它是否會有所幫助,但我幾乎在所有項目中都啟用了它。
lombok.addLombokGeneratedAnnotation = true
您可以添加@Override
通過使用一個特定的領域@Getter
的onMethod
。
例如
@Getter(onMethod = @__(@Override))
private Object a;
@Override
對代碼本身沒有影響。 它只是通知編譯器該方法正在覆蓋其超類中的方法。 如果該方法沒有覆蓋超類中的方法,編譯器將導致構建失敗。
防止通過Error Prone (或類似工具)對缺少 @Override 進行誤報檢測的更通用方法是配置 Lombok 以使用@lombok.Generated
注釋其生成的代碼。 這可以通過將以下條目添加到 Lombok 的lombok.config
來全局完成:
lombok.addLombokGeneratedAnnotation = true
請注意,這不是一個通用的解決方案 - 相關工具需要尊重@lombol.Generated
(或者更好,任何@*.Generated
)注釋。
Jacoco
和Error Prone
(最近)等工具已經支持它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.