PMD: Security – Array is stored directly

En Sonar, a la hora de revisar el cumplimiento de reglas, una de las que aparece muy frecuentemente en el software que nos entregan es la regla PMD “Security – Array is stored directly” que se produce cuando uno de los parámetros que aparece en la definición de un método, de un constructor o de un setter (es bastante frecuente que cuando los accesores son autogenerados por el IDE o por generador de código se produzca este tipo de incumplimientos, salvo que se haya tenido en cuenta previamente) es un array y en el interior del método se realiza una asignación de dicho objeto a otro (que no es local) sin realizarse previamente una clonación (se tendría lo que algunos denominan acoplamiento entre objetos por compartir direcciones de memoria).

Si no clona el objeto resulta muy peligroso, ya que el número de objetos que apuntan a las mismas direcciones de memoria aumenta y en consecuencia se incrementa la posibilidad de errores colaterales, los cuales además en estos casos no son siempre triviales de localizar.

5 comentarios
  1. La peligrosidad de hacer eso es totalmente dependiente del contexto. PMD marca el código según la regla que tiene, pero está en el humano decidir si es o no correcto.
    De hecho toda vez que se invoca un setter con un objeto no inmutable se tiene el riesgo de que quede compartido y pueda ser modificado.
    No es sensato hacer copias de todo objeto mutable siempre.

    • jummp dijo:

      Totalmente de acuerdo, por ese motivo, del conjunto de métricas que proporciona Sonar no presto una atención especial a la violación de reglas.

      No obstante en el libro blanco de desarrollo de mi organización solicitamos que los desarrolladores que trabajen con nosotros tengan el plugin de PMD o el de Findbugs activados, no con el objeto de que corrijan todo lo que les aparezca señalado sino para que modifiquen todo lo que ellos consideren que sea sensato (si un programador tiene dudas al respecto siempre puede preguntar a otro más experto o en última instancia a uno de los arquitectos de su empresa).

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: