Prev Next

Java / Lombok Interview questions

What issues can Lombok cause with static code analysis tools?

Static analysis tools that operate on source code (rather than compiled bytecode) may not understand Lombok's annotations at all, and so analyze the class as if the generated methods simply don't exist — this can produce both false positives (flagging a field as "never read" when it actually is, via a Lombok-generated getter) and false negatives (missing a real bug inside logic that only exists after Lombok's generation, since the tool never sees it).

//  a source-based analyzer might flag `email` as unused,
//  not realizing @Getter/@Setter generate real accessors for it
@Getter @Setter
private String email;

The fix generally depends on the specific tool: many mainstream static analysis tools (SonarQube, Checkstyle, PMD, certain IDE inspections) have added explicit Lombok awareness over time, either natively or via a plugin, so this has become less of a problem than it once was — but a lesser-known or in-house tool that only parses raw source may still need this pointed out or configured for, and coverage tools measuring line coverage can also misreport results for Lombok-generated code that technically has no corresponding source lines to mark as covered.

Why might a source-based static analysis tool flag a Lombok-annotated field as 'unused'?
What has generally improved this situation over time?

Invest now in Acorns!!! 🚀 Join Acorns and get your $5 bonus!
Acorns Logo

Invest now in Acorns!!! 🚀
Join Acorns and get your $5 bonus!

Earn passively and while sleeping

Acorns is a micro-investing app that automatically invests your "spare change" from daily purchases into diversified, expert-built portfolios of ETFs. It is designed for beginners, allowing you to start investing with as little as $5. The service automates saving and investing. Disclosure: I may receive a referral bonus.

Robinhood Logo

Invest now!!! Get Free equity stock (US, UK only)!

Use Robinhood app to invest in stocks. It is safe and secure. Use the Referral link to claim your free stock when you sign up!.

The Robinhood app makes it easy to trade stocks, crypto and more.


Webull Logo

Webull! Receive free stock by signing up using the link: Webull signup.

More Related questions...

What is Lombok? What is the purpose of Lombok in Java? How do you add Lombok to a Maven project? How do you add Lombok to a Gradle project? What is @Getter used for? What is @Setter used for? What is @ToString used for? What is @EqualsAndHashCode used for? What is @NoArgsConstructor used for? What is @AllArgsConstructor used for? What is @RequiredArgsConstructor used for? What is @Data used for? What is @Value used for? What is @Builder used for? What is @Slf4j used for? What is @NonNull used for? What is @Cleanup used for? What is @SneakyThrows used for? What is @Synchronized used for? What is @With used for? Describe how Lombok works under the hood (annotation processing)? How do you install the Lombok plugin in an IDE? What are the types of Lombok annotations? How do you exclude a field from @ToString? How do you exclude a field from @EqualsAndHashCode? What is @Builder.Default used for? Why does IDE support matter for using Lombok effectively? What is the difference between @Data and @Value? What is the difference between @NoArgsConstructor, @AllArgsConstructor, and @RequiredArgsConstructor? When should you use @Builder instead of a constructor? How does @EqualsAndHashCode handle inheritance by default? Why can @Data be risky on JPA entity classes? How do you combine Lombok's @Builder with inheritance? What is the difference between @Getter(lazy = true) and a normal @Getter? Why should you be careful using @EqualsAndHashCode on Hibernate entities with lazy-loaded proxies? What is @Accessors used for and how does it change fluent-style access? How does Lombok handle @ToString with circular references? What is @FieldDefaults used for? What is @Delegate used for? Why is Lombok's approach considered a "compiler hack" and what are the implications? How do you debug generated Lombok code? What issues can Lombok cause with static code analysis tools? What are the risks of using @Data with mutable collections? How does delombok work and when would you use it? Why might Lombok cause issues in multi-module Maven builds with annotation processor ordering? What is @UtilityClass used for? What is the difference between Lombok's @Builder and the traditional Gang-of-Four Builder pattern? How do you use Lombok with Java records - is Lombok still needed?
Show more question and Answers...

Spring

Comments & Discussions