Files

2.2 KiB
Raw Permalink Blame History

description, agent
description agent
用自然语言为 code-checker 新增一条规则(语义/声明式/Python 兜底)并注册生效 build

rulegen

为 code-checker 新增一条代码规则。先加载 rulegen skill 并按其流程执行(若可用)。

用户要新增的规则描述:

$ARGUMENTS

前置

  • 确认当前工作目录是 code-checker 项目(含 tools/rulegen.pydocs/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.yamlpattern必须用 YAML 单引号,如 pattern: 'Thread\\.sleep\\s*\\('
    • python(机械 Python 兜底):需跨行/AST 逻辑,且是 Java(JSP 不支持)→ rule.yaml + checker.py(继承 BaseCheckerCATEGORIES 用新类别)
  3. rules/_staging/<rule-slug>/ 下生成 rule.yaml(必要时含 checker.pysample.<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.yamlpython 类另含 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 提交。