用途:对代码库执行 Semgrep 静态分析,用于安全审计、代码审查前发现漏洞、已知缺陷模式扫描和首轮静态分析。不适用于二进制分析、已配置 Semgrep CI 的流水线、无 Pro 许可却需跨文件分析(可考虑 CodeQL),以及创建或移植自定义规则(另有对应技能)。
主要能力:自动检测语言;按语言或类别并行扫描(宿主支持子代理委派时),否则顺序执行;合并输出 SARIF;可选 Semgrep Pro 启用跨文件污点跟踪与过程间分析,并支持 Apex、C#、Elixir 等额外语言。
使用方式:先解析输出目录(用户指定或默认 ./static_analysis_semgrep_1 并递增),用 mkdir -p 创建;检测语言并检查 Pro 可用性:semgrep --pro --validate --config p/default 2>/dev/null && echo "Pro available" || echo "OSS only";选择扫描模式(run all 或 important only)与规则集;向用户展示计划并获得明确批准(硬性关卡);按语言或类别运行扫描;最后合并结果:uv run scripts/merge_sarif.py $OUTPUT_DIR/raw $OUTPUT_DIR/results/results.sarif。所有 semgrep 命令必须加 --metrics=off 以防遥测泄露。
限制:OSS 模式无法跨文件跟踪数据流;Pro 模式跨文件分析使用 -j 1,单规则集较慢。第三方规则集(Trail of Bits、0xdea、Decurity)为必需项。目标应使用绝对路径,克隆的仓库需清理。