1
0
Files
DiAL/openspec/changes/http-checker-quality-hardening/tasks.md
lanyuanxiaoyao 76b47006fe feat: 新增两个 OpenSpec 变更提案 — 前端架构重构与 HTTP Checker 质量加固
- frontend-architecture-refactor: 拆分 hooks/组件、类型筛选器动态化
- http-checker-quality-hardening: ReDoS 防护、failure 格式修正、测试补全
2026-05-13 18:40:08 +08:00

2.6 KiB
Raw Blame History

1. failure actual 截断

  • 1.1 修改 src/server/checker/expect/failure.tstruncateActual 函数,截断后缀从 ... 改为 …(共 N 字符),其中省略号为单字符 U+2026
  • 1.2 更新 tests/server/checker/runner/shared/failure.test.ts 中截断相关测试断言,匹配新格式(检查省略号为单字符且带字符计数)

2. ReDoS 防护

  • 2.1 在 src/server/checker/expect/ 下新增 redos.ts,实现 isUnsafeRegex(pattern: string): boolean 函数,检测嵌套量词模式
  • 2.2 在 src/server/checker/runner/http/validate.tsvalidateRegexRulesrc/server/checker/expect/validate-operator.ts 的 match 校验中调用 isUnsafeRegex,不安全时返回 issue
  • 2.3 在 tests/server/checker/runner/http/runner.test.ts 中补充 ReDoS 正则启动校验失败的测试用例
  • 2.4 在 tests/server/checker/runner/shared/ 下新增 redos.test.ts,覆盖常见 ReDoS 模式和安全正则的判定

3. JSON parse 优化

  • 3.1 修改 src/server/checker/runner/http/body.tscheckBodyExpect 函数,维护 parsedJson 缓存状态,首次 json 规则 parse 后复用结果
  • 3.2 修改 checkJsonRule 签名接受可选的预解析 JSON 对象,避免重复 JSON.parse
  • 3.3 在 tests/server/checker/runner/shared/body.test.ts 中补充多条 json 规则共享 parse 结果的测试(验证行为正确性)

4. CSS 规则精简

  • 4.1 重构 src/server/checker/runner/http/body.tscheckCssRule 为线性流程:解析 HTML → exists:false 短路 → 查找元素 → exists:true 短路 → 提取值 → operator 匹配
  • 4.2 确认 tests/server/checker/runner/shared/body.test.ts 中现有 CSS 测试全部通过

5. execute.ts 精简

  • 5.1 将 src/server/checker/runner/http/execute.ts 第 56-74 行的提前 duration 检查提取为 checkEarlyTimeout 辅助函数,明确意图

6. 补充测试

  • 6.1 在 tests/server/checker/runner/http/runner.test.ts 中补充 303 重定向 method 转 GET 的测试
  • 6.2 在 tests/server/checker/runner/http/runner.test.ts 中补充 307/308 保持原始 method 和 body 的测试
  • 6.3 在 tests/server/checker/runner/http/runner.test.ts 中补充相对路径 Location header 重定向的测试
  • 6.4 在 tests/server/checker/runner/http/runner.test.ts 中补充混合 body rulescontains + json + css集成测试

7. 质量保障

  • 7.1 执行完整测试套件 bun test、代码检查 bun run lint、格式检查 bun run format:check 确保无回归
  • 7.2 更新 DEVELOPMENT.md 中 ReDoS 校验相关说明(如有必要)