用途:指导创建自定义 Semgrep 规则,用于检测安全漏洞、bug 模式与代码模式,例如强制编码规范。不适用于运行已有规则集,或无需自定义规则的通用静态分析。
主要能力:支持 taint 模式(优先,用于数据从不可信输入流向危险 sink 的数据流漏洞)与模式匹配(简单语法模式)。输出固定为以 rule-id 命名的目录下两个文件:rule-id.yaml 规则与 rule-id.<ext> 测试文件(含 ruleid/ok 注解)。
使用方式:流程为分析问题、先写测试、分析 AST、写规则、迭代至全部测试通过、最后优化。测试命令:semgrep --test --config <rule-id>.yaml <rule-id>.<ext>。编写前需阅读 Semgrep 文档(规则语法、模式语法、ToB Testing Handbook、常量传播、Writing Rules Index)。
限制与要求:测试先行且 100% 通过;优化放在最后;每个 YAML 只能含一条规则;避免过宽或过泛的 generic 模式;禁止 todoruleid 与 todook 注解;输出不能替代针对具体环境的验证与专家审查;缺少输入、权限或成功标准时应停下询问。