Files
ElyOffice/tasks/reviews/C13.2-r1.md
T

4.4 KiB
Raw Blame History

FAIL

apps/ely-tree/src/pick.rs:113 — 异步差异结果只核对 serial,每次 show 又把 serial 归零(:56),不同文件的首读都会得到 1。复现:延迟 a.txt 的读取,切到 b.txt 并等它显示,再放行 a.txt;真窗口 AX 行从“− before-b / + after-b”变成“− before-a / + after-a”,当前选择仍是 b.txt,违反 TREE-03、TREE-04。隔离 GPUI 延迟回调探针同样失败。修复方向:读取序号在窗口生命周期内保持唯一,并在回调核对发起时的仓库、路径、分区与读取身份;补上跨文件延迟完成的回归。

apps/ely-tree/src/diff.rs:197 — 把未选的删除行转成上下文时,照搬其无结尾换行标记,随后写入所选新增行会把两行拼接。复现:索引为 "one\ntwo",工作树为 "one\nTWO\nmore\n",只选 +more 暂存;Git apply 成功,实际索引变成 "one\ntwomore\n",所选独立行被合入保留的 two 行。原有无结尾换行测试只覆盖整对替换;补充探针失败。修复方向:按切片后两侧的实际行边界生成换行标记,保留 EOF 行后追加所选行时正确生成分隔换行,并覆盖暂存与反向取消暂存。

apps/ely-tree/src/work.rs:74 — 局部补丁的 apply 参数继承 apply.whitespace,用户配置能静默改写精确比较中选中的内容。复现:git config apply.whitespace fix,把 a.txt 从 "one\ntwo\n" 改成 "one\nTWO \n",选择 -two 与 +TWO 的两行暂存;操作成功,索引得到 "one\nTWO\n",两个尾随空格消失,违反 TREE-04 的可验证行选择。补充探针直接读取索引确认失败。修复方向:为局部补丁显式固定保留所选字节的 whitespace 行为,并增加带用户 apply.whitespace 配置的索引字节断言。

apps/ely-tree/src/shown.rs:190 — 通过差异输出判断 UTF-8 后,对旧 blob 使用 from_utf8_lossy;差异上下文以外的非法字节被替换成 U+FFFD,文件仍进入文本视图并开放局部暂存。复现:提交首行为 0xff、后续为 2 至 30 的文本文件,再仅追加 last 行;Git 输出的末尾差异是有效 UTF-8,shown::read 返回 Found::Text,展开首段显示替换字符。补充探针失败,违背 agents.md C13.2 对非 UTF-8 文件显示两侧大小并整体暂存的约定。修复方向:验证实际两侧内容的编码,以原始字节判断文件类型;任一侧含非法 UTF-8 时显示二进制大小并限制为整份操作,覆盖非法字节位于差异之外的场景。

apps/ely-tree/src/shown.rs:80 — 机器差异读取继承 diff.suppressBlankEmpty,但 parse 要求每条上下文行具有前导空格。复现:提交 "one\n\ntwo\n",改为 "one\n\nTWO\n",设置 git config diff.suppressBlankEmpty true;点击文件得到“无法读取此差异”,错误为 an unread diff line "",普通文本差异与局部暂存均不可用。补充探针失败。修复方向:显式规范 Git 的补丁输出格式,或兼容该配置生成的空上下文行,并确保后续补丁恢复规范格式;补上配置回归。

apps/ely-tree/src/shown.rs:220 — 空旧文件经 split('\n') 被算成一个空白行,生成文件中实际不存在的折叠行及行号。复现:提交空的 a.txt,再写入 "hello\n";stretches 返回新增 hello 的块以及一个 Folded 行,后者 old=1、new=2、text="",界面可展开虚构的“1 行未改动”。补充探针断言实际行数失败,违反 TREE-03 的差异内容和 C13.2 行号约定。修复方向:空 blob 按零行处理,增加空旧文件的行数与展开内容断言。

../Ely-GPUI-Components/src/git/viewer.rs:513 — 指定组件版本 2e080b8 的此文件实测为 513 行,超过项目和本轮审查要求的 500 行上限。复现:wc -l src/git/viewer.rs 输出 513,渲染实现本身已延伸到 :503。修复方向:将现有实现整理至每个文件最多 500 行,并以实际行数校验。

../Ely-GPUI-Components/src/git/diff.rs:163 — 本次组件改动引入的注释为 11 个词,超过本轮要求的十词上限;同批 src/git/tests.rs:155、:216 的新增注释也各为 11 个词。复现:按空白分词,分别得到 “Marks the words each removal and the addition beside it changed.”、“Past the two layout segments: the hunk's button, then its lines.”、“Each row is a stop; its icons stay hidden until hover.”,均为 11。修复方向:将这三条注释各缩至十词以内,并把组件改动纳入注释长度检查。