pi-lens
Version:
Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo
76 lines (64 loc) • 1.86 kB
YAML
# Spring SessionAttributes setComplete
# Detects classes with 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 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
("user")
public class UserController {
("/complete")
public String complete(SessionStatus status) {
status.setComplete(); // Clear session attributes
return "done";
}
}
```
query: |
(class_declaration
(modifiers
(annotation
name: (identifier) (#eq? "Controller"))
(annotation
name: (identifier) (#eq? "SessionAttributes"))))
metavars:
- ANNOT1
- ANNOT2
post_filter: missing_setcomplete_call
tags:
- reliability
- java
- spring
- session
- memory-leak
examples:
bad: |
("data")
public class MyController {
("/submit")
public String submit(SessionStatus status) { // Missing setComplete()
return "done";
}
}
good: |
("data")
public class MyController {
("/submit")
public String submit(SessionStatus status) {
status.setComplete(); // GOOD - clean up
return "done";
}
}
has_fix: false