There are a two issues around the rule BeanMembersShouldSerialize:
The rule exists since PMD 1.1 but doesn't really check for serialization despite its name:
The name of the rule is confusing too, since it's not checking that members should be serializable (which would be interesting on it's own), but rather if the getter / setters are in place. I suggest renaming this rule accordingly.
I'm proposing the following changes:
java.io.Serializable
transient
fields can be ignoredprefix
- if a class is serializable, all members have to be serializable as well, regardless of their nameThat way, we don't need to need to add a new property like #403 suggests.
And since we only consider serializable classes, the rule should be less noisy (#1668).
Note: BeanMembersShouldSerialize can be suppressed with @SuppressWarnings("serial")
, which actually doesn't make sense, since the rule doesn't do serializability checks (originally implemented per request https://sourceforge.net/p/pmd/bugs/784/)
Alternative
We could actually just create a new rule "NonSerializableClass" and deprecate "BeanMembersShouldSerialize" entirely. While the implementation will be completely different, the original intention (serializability) is the same of both rules.
It probably makes not so much a difference, since the rule was probably not used at all because it's so noisy...
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4