redhat-developer / redhat-developer/vscode-java
Extract method refactoring leads to inconsistent code behavior.
还没有人认领这个 Issue。
- 主要语言
- TypeScript
- 星标
- 2.3k
- 派生
- 546
- 平均合并
- 20 小时 1 分钟
- 30 天内合并 PR
- 11
描述
[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.
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
使用提供的 OriginalClass 示例以及列出的 VS Code 和 JDK 版本,在 Java 扩展中复现该案例。跟踪 Extract to method 重构的入口点;完成的标准是重构能够检测到 return 语句,在适当情况下进行提示,并且不允许不安全的提取。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java, typescript, vscode
- 领域
- tooling
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100