Semgrep 自定义规则运行器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 的指引,将 @user_3c6cb52e/semgrep-custom-rule-runner-2 安装到你的 AI 助手中。
技能介绍
要解决的问题
通用静态分析工具往往预设一套固定规则集,面对团队私有的编码习惯、项目特有的反模式(例如错误的资源关闭顺序、不安全的字符串拼接)时力不从心。直接照搬官方规则要么误报太多,要么覆盖不到你代码里真实存在的坏味道。你需要一种方式,把「这个项目里什么算错」用可维护的 YAML 精确表达出来,并交给 Semgrep 引擎执行。
核心能力
- 以项目自定义的 YAML 规则文件驱动
semgrep命令行运行,而不是依赖内置规则集 - 同时支持
--config(指定规则文件路径)与--pattern(单条匹配模式)两种调用方式 - 利用元变量(metavariable)约束匹配条件,让规则可以表达「同名参数必须成对出现」这类结构化断言
- 面向 Python、JavaScript、Go、Java 四类代码库提供反模式检测示例与适配
工作方式
- 在项目仓库内维护一份 YAML 规则文件,每条规则声明目标语言、要匹配的代码模式以及可选的约束条件
- 运行时通过
semgrep --config <path>加载规则文件,引擎对工作区执行扫描 - 也可以针对单条模式用
--pattern快速验证某段写法是否符合预期 - 命中规则后,Semgrep 输出文件路径与行号,方便直接跳回对应代码修正
适用边界
- 该技能只负责「如何组织规则并调用引擎」,不负责替你编写规则内容,检出质量取决于使用者对反模式本身的理解
- 元变量匹配基于文本结构而非类型推导,涉及跨函数数据流的复杂语义可能漏报
- 规则文件属于项目资产,需要纳入版本管理并与团队 review 流程配合
- 上游的语言覆盖、IDE 集成、CI 接入等能力以 Semgrep 官方文档为准,本技能不做额外扩展
使用场景
- 团队维护 Python 仓库,想把私有的并发反模式写成 YAML 规则并接入 CI 扫描
- 前端项目里反复出现不安全的 innerHTML 写法,需要用 `--pattern` 快速验证并定位
- Go 服务代码存在资源未及时关闭的坏味道,想通过 `--config` 批量检出并修正
- Java 团队要统一空指针检查规范,希望用元变量约束自动扫描全量代码
适合人员
- 后端工程师,需要在 Go 服务里用自定义规则批量找出资源泄漏的反模式
- 前端开发者,想在 JavaScript 项目里用 Semgrep 定位不安全的 DOM 操作写法
- SAST 工具维护者,负责把团队私有规范转成 YAML 规则并接入 CI 扫描
- 技术负责人,想用 `--pattern` 快速验证一段代码是否符合项目编码标准