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.
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. Aunques
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 ques
esté tanto declarada como utilizada en el código, lo haciendo completamente válido y eliminando cualquier falso positivo informado por SonarQube.