UNPKG

pi-lens

Version:

Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo

76 lines (64 loc) • 1.86 kB
# Spring SessionAttributes setComplete # Detects @Controller classes with @SessionAttributes that don't call setComplete id: spring-session-attributes-setcomplete name: SessionAttributes Controllers Must Call setComplete severity: error category: reliability defect_class: correctness inline_tier: blocking language: java message: "@Controller with @SessionAttributes must call setComplete on SessionStatus" description: | Controllers using @SessionAttributes must call setComplete() on the SessionStatus parameter to clean up session attributes. Otherwise, session data leaks and causes memory issues. ✅ FIX: Call setComplete() when done with session attributes ```java @Controller @SessionAttributes("user") public class UserController { @RequestMapping("/complete") public String complete(SessionStatus status) { status.setComplete(); // Clear session attributes return "done"; } } ``` query: | (class_declaration (modifiers (annotation name: (identifier) @ANNOT1 (#eq? @ANNOT1 "Controller")) (annotation name: (identifier) @ANNOT2 (#eq? @ANNOT2 "SessionAttributes")))) metavars: - ANNOT1 - ANNOT2 post_filter: missing_setcomplete_call tags: - reliability - java - spring - session - memory-leak examples: bad: | @Controller @SessionAttributes("data") public class MyController { @PostMapping("/submit") public String submit(SessionStatus status) { // Missing setComplete() return "done"; } } good: | @Controller @SessionAttributes("data") public class MyController { @PostMapping("/submit") public String submit(SessionStatus status) { status.setComplete(); // GOOD - clean up return "done"; } } has_fix: false