A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/pmd/pmd/issues/4176 below:

[java] Rename BeanMembersShouldSerialize to NonSerializableClass · Issue #4176 · pmd/pmd · GitHub

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.

(#403 (comment))

I'm proposing the following changes:

  1. Rename the rule to "NonSerializableClass" (still category "Error Prone")
  2. Only consider classes, that are java.io.Serializable
  3. Verify, that each member (= field) of the class is again serializable. This is effectively implementing SonarSource's rule https://rules.sonarsource.com/java/RSPEC-1948
  4. Taking into account, that transient fields can be ignored
  5. Don't look at getters or setters - this is something for a different rule that actually checks Java Beans conformity
  6. Deprecate the property prefix - if a class is serializable, all members have to be serializable as well, regardless of their name

That 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