chore: sync local changes, add Chinese docs and opencode config

This commit is contained in:
AuraK Developer
2026-08-31 11:37:03 +08:00
parent 307d2fd471
commit ecc55158c1
81 changed files with 7645 additions and 144 deletions
+40
View File
@@ -0,0 +1,40 @@
---
description: 用自然语言为 code-checker 新增一条规则(语义/声明式/Python 兜底)并注册生效
agent: build
---
# rulegen
为 code-checker 新增一条代码规则。先加载 rulegen skill 并按其流程执行(若可用)。
用户要新增的规则描述:
$ARGUMENTS
## 前置
- 确认当前工作目录是 code-checker 项目(含 `tools/rulegen.py``docs/rulegen/prompt-template.md`)。若不是,先切换到该项目根目录或使用其绝对路径执行。
- Windows 下若无 `python` 命令,使用 `py`
## 执行步骤
1. 读取提示词模板 `docs/rulegen/prompt-template.md`,按其 schema 与全部约定执行。
2. 判断规则类型(三选一):
- **semantic(语义)**:需理解代码意图(如 catch 块日志、XSS 转义)→ 只生成 `rule.yaml`,必含 `check_prompt` + `message_zh`
- **declarative(声明式机械)**:行级正则可表达 → `rule.yaml``pattern`(**必须用 YAML 单引号**,如 `pattern: 'Thread\\.sleep\\s*\\('`
- **python(机械 Python 兜底)**:需跨行/AST 逻辑,且是 Java(JSP 不支持)→ `rule.yaml` + `checker.py`(继承 `BaseChecker``CATEGORIES` 用新类别)
3.`rules/_staging/<rule-slug>/` 下生成 `rule.yaml`(必要时含 `checker.py``sample.<java|jsp>``negative.<java|jsp>`)。
4. 依次执行(在项目根目录;退出码 0=OK / 1=失败,失败先修正再重试,**不要**强制跳过):
```
python tools/rulegen.py validate rules/_staging/<rule-slug>
python tools/rulegen.py smoke rules/_staging/<rule-slug> # 语义规则跳过
python tools/rulegen.py register rules/_staging/<rule-slug> --dry-run
python tools/rulegen.py register rules/_staging/<rule-slug>
```
5. 注册完成后向用户报告:规则 ID 与类型、落盘文件(`rules/custom/<lang>-rules.yaml`python 类另含 `check-engine/custom_checkers/`)、校验/冒烟摘要。
## 纪律
- **不修改** `rules/java-rules.yaml` / `rules/jsp-rules.yaml` / `rules/messages.yaml` 等交付文件;只写 `rules/custom/` 与 `check-engine/custom_checkers/`。
- ID 编号写 `-001` 即可,`register` 会自动重编号。
- 生成后不做 git 提交。