es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Falso positivo de variable local no utilizada.

Mientras se usa la versión 6.3.0.39716 de SonarLint, se informa que la siguiente variable no se utiliza:

void read() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s; // variable local no utilizada 's'
while ((s = reader.readLine()) != null) {
}
}

Pero la variable s se utiliza en la siguiente línea, ¿debería considerarse como no utilizada ya que s solo se le asigna un valor?
Editado-
Esto no se considera una variable local no utilizada.
“`
void read() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s; // ok
s = reader.readLine();
while (s != null) {
s = reader.readLine();
}
}

“`
Aquí también se asigna un valor a s además de ser utilizado en una condición booleana, al igual que en el caso anterior.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Java y SonarQube, puedo confirmar que el informe inicial de la variable s siendo no usada en el fragmento de código es un falso positivo. Aunque s no es utilizada inmediatamente después de ser declarado, se le asigna un valor en la línea posterior y luego se utiliza para comprobar la condición de terminación en el siguiente bucle. Por lo tanto, s claramente está siendo utilizada en el código y no debe considerarse como una variable local no utilizada.

    En el fragmento de código corregido proporcionado, el problema se ha resuelto mediante la inicialización adecuada de s antes del bucle y luego la actualización de su valor dentro del bucle hasta que se cumpla la condición de terminación. Este enfoque asegura que s esté tanto declarada como utilizada en el código, lo haciendo completamente válido y eliminando cualquier falso positivo informado por SonarQube.

Comments are closed.