redhat-developer / redhat-developer/vscode-java
Refactoring extraction methods 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 "switch (value) {...return result;"
- click “Refacator-Extract to method”
class ExtractMethodTest {
private final int value;
public ExtractMethodTest(int value) {
this.value = value;
}
public synchronized int calculate() {
int result;
// extract method
switch (value) {
case 1:
result = value * 2;
break;
case 2:
result = value * 3;
break;
default:
result = value * 4;
break;
}
return result;
// end
}
}
refactoring result:
Reason: Local variables have been added to the extraction method, and if the inline method refactoring is performed, it will not match the behavior of the original code
Expected behavior: Check before and after refactoring and provide warning prompts
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
报告中没有指定源文件或测试。请在 Windows 11 上使用 JDK 17 重现 Extract to method 案例,然后比较原始行为、提取后的行为和 inline 重构后的行为。检测到不一致的行为,并在重构之前或之后显示适当的警告,即视为完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java, vscode
- 领域
- devtools
- Issue 类型
- 重构
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100