2.2 KiB
2.2 KiB
description, agent
| description | agent |
|---|---|
| 用自然语言为 code-checker 新增一条规则(语义/声明式/Python 兜底)并注册生效 | build |
rulegen
为 code-checker 新增一条代码规则。先加载 rulegen skill 并按其流程执行(若可用)。
用户要新增的规则描述:
$ARGUMENTS
前置
- 确认当前工作目录是 code-checker 项目(含
tools/rulegen.py与docs/rulegen/prompt-template.md)。若不是,先切换到该项目根目录或使用其绝对路径执行。 - Windows 下若无
python命令,使用py。
执行步骤
- 读取提示词模板
docs/rulegen/prompt-template.md,按其 schema 与全部约定执行。 - 判断规则类型(三选一):
- 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用新类别)
- semantic(语义):需理解代码意图(如 catch 块日志、XSS 转义)→ 只生成
- 在
rules/_staging/<rule-slug>/下生成rule.yaml(必要时含checker.py、sample.<java|jsp>、negative.<java|jsp>)。 - 依次执行(在项目根目录;退出码 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> - 注册完成后向用户报告:规则 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 提交。