Semgrep 静态代码分析入门:把代码审查变成一条可重复运行的命令
发布时间:2026/9/10 7:47:14 锦皓数字建站

Semgrep 静态代码分析入门把代码审查变成一条可重复运行的命令【免费下载链接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.项目地址: https://gitcode.com/GitHub_Trending/se/semgrepSemgrep 用类源码模式的匹配规则扫描多语言仓库对整库做一次静态代码分析只需一条命令漏洞和代码规范问题秒级返回。本文按提交前漏检、规范落地、审查排队三个场景说明它如何工作并给出安装、自定义规则与 CI 配置。它解决了什么问题审查里漏掉的那类漏洞。人读 diff 时容易放过把用户输入拼进 SQL这类问题而且同一种模式可能散落在几十个文件里。Semgrep 的规则写成源码片段的形态例如用模式匹配手工拼接查询的代码跑一遍整个仓库即可全部列出不依赖人工逐文件过目。团队规范落地的困难。日志用 logger 而不是 print这类约定靠口头约定和 reviewer 逐条把关执行力度随人随时间波动。把约定写成 YAML 规则后每位开发本地跑同一条命令得到同样的结果规则本身也可以进 CI 强制执行。审查排队的反馈延迟。问题等 reviewer 排到才暴露修改成本随等待时间上升。规则匹配在本地秒级完成写规则不需要先理解 AST 抽象语法树新成员也能把一条团队约定变成可运行的检查。 跑起来git clone https://gitcode.com/GitHub_Trending/se/semgrep cd semgrep pip install -e . # 依赖见 setup.py 与 pyproject.toml semgrep scan --langpython --patternprint(...)最后一条命令同时完成安装验证它会扫描当前目录下的 Python 文件本仓库自带大量 .py 文件能直接看到匹配输出。两种用法auto 模式扫描整仓semgrep scan --config auto--config auto从官方规则注册表拉取规则集并按项目语言匹配输出按语言列出对应规模例如一次扫描显示multilang 54 rules × 36 files、js 179 rules × 8 files、json 4 rules × 3 files无需手动逐语言指定规则。3 行 YAML 写出首条规则规则就是带元信息的模式。下面这条规则用于把生产代码里的print()替换为日志调用rules: - id: python-no-prints-in-prod languages: [python] message: Use logging.debug() instead of print() pattern: print(...) severity: INFO写规则时可以配合编辑器上半部分写 YAML下半部分粘贴测试代码命中行会被高亮标出保存规则文件前就能确认匹配效果。让扫描自动跑把扫描挂进 GitHub Actions最小可用的配置如下每次 push 和 pull request 都会执行一次 auto 扫描name: semgrep on: [push, pull_request] jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - run: pip install semgrep semgrep scan --config auto继续深入内置规则库perf/r2c-rules/ 存放 Python、JavaScript、Java、Go 等多语言安全检测规则可直接作为--config的参数规则文档仓库没有内置 docs 目录规则编写与 CLI 选项的完整文档在 README 的 Documentation 一节README.md高级特性如metavariable-pattern、taint 模式等以官方文档为准控制扫描时长--config指向本地规则文件可只跑选定子集扫描多语言大仓库时可先用--lang过滤CLI 参数与退出码定义在 cli/src/semgrep/下一步把你团队的第一条代码规范写成 YAML 规则跑通semgrep scan --config 你的规则.yml再接入上面的 Actions 配置让它在每个 PR 上自动生效。【免费下载链接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.项目地址: https://gitcode.com/GitHub_Trending/se/semgrep创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。