Mutable ``++static++`` members which are accessed directly, rather than through getters and setters, should be protected to the degree possible. That can be done by reducing visibility or making the field ``++final++`` if appropriate. Note that making a mutable field, such as an array, ``++final++`` will keep the variable from being reassigned, but doing so has no effect on the mutability of the internal state of the array (i.e. it doesn't accomplish the goal).
This rule checks that ``++static++`` arrays, ``++Collection++``s, ``++Date++``s, and ``++awt.Point++``s are not ``++public++`` in classes and enumerations.
This rule relates to some threads of discussions on the user mailing list:
* It's ultimately hard to know if an object is mutable or not
* And so it's almost impossible to have a rule checking something on "mutable" objects
That's why the scope of the Findbugs rules is limited to known mutable objects like arrays and hashtables. I would also limit the scope of this rule to a defined list of objects.
=== on 27 Jan 2015, 20:52:45 Freddy Mallet wrote:
I guess we could link this rule with \http://cwe.mitre.org/data/definitions/607.html
=== on 28 Jan 2015, 12:18:47 Ann Campbell wrote:
\[~freddy.mallet] do you want a narrower list than "arrays, collections and Dates" ?