redhat-developer / redhat-developer/vscode-java
Extract method refactoring leads to inconsistent code behavior.
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.3k
- Forks
- 546
- Merge medio
- 20 h 1 min
- PR fusionados (30 d)
- 11
Descripción
[provide a description of the issue]
Environment
- Operating System: Windows11
- JDK version: 17
- Visual Studio Code version: 1.88
- Java extension version: 1.29
Steps to Reproduce:
- select "return;"
- click “Refacator-Extract to method”
public class OriginalClass {
public void foo() {
Object runnable= null;
Object[] disposeList= null;
for (int i=0; i < disposeList.length; i++) {
if (disposeList [i] == null) {
disposeList [i] = runnable;
// extract method
return;
}
}
}
}
refactoring result:
Reason: The extraction method does not contain a return statement. If inline refactoring is performed on the extraction method, the behavior of the statement before and after refactoring is inconsistent.
Expected behavior: Check for statements like return, provide a prompt before refactoring, and do not allow extraction method refactoring.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el caso en la extensión de Java usando el ejemplo proporcionado OriginalClass y las versiones indicadas de VS Code y JDK. Rastrea el punto de entrada de la refactorización Extract to method; se considera terminado cuando la refactorización detecta la sentencia return, solicita lo necesario cuando corresponde y no permite una extracción insegura.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java, typescript, vscode
- Área
- tooling
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100