org.sonar.plugins.csharp.S2386.html Maven / Gradle / Ivy
Why is this an issue?
public static
mutable fields of classes which are accessed directly should be protected to the degree possible. This can be done by
reducing the accessibility of the field or by changing the return type to an immutable type.
This rule raises issues for public static
fields with a type inheriting/implementing System.Array
or
System.Collections.Generic.ICollection<T>
.
Noncompliant code example
public class A
{
public static string[] strings1 = {"first","second"}; // Noncompliant
public static List<String> strings3 = new List<String>(); // Noncompliant
}
Compliant solution
public class A
{
protected static string[] strings1 = {"first","second"};
protected static List<String> strings3 = new List<String>();
}
Exceptions
No issue is reported:
- If the type of the field inherits/implements one (at least) of the following types:
-
System.Collections.ObjectModel.ReadOnlyCollection<T>
-
System.Collections.ObjectModel.ReadOnlyDictionary<TKey, TValue>
-
System.Collections.Frozen.FrozenDictionary<TKey, TValue>
-
System.Collections.Frozen.FrozenSet<T>
-
System.Collections.Immutable.ImmutableArray<T>
-
System.Collections.Immutable.IImmutableDictionary<TKey, TValue>
-
System.Collections.Immutable.IImmutableList<T>
-
System.Collections.Immutable.IImmutableSet<T>
-
System.Collections.Immutable.IImmutableStack<T>
-
System.Collections.Immutable.IImmutableQueue<T>
- If the field is
readonly
and is initialized inline with an immutable type (i.e. inherits/implements one of the types in the
previous list) or null.
Resources
© 2015 - 2024 Weber Informatics LLC | Privacy Policy