
Semgrep 代码扫描一条命令跑通首次漏洞扫描【免费下载链接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.项目地址: https://gitcode.com/GitHub_Trending/se/semgrep每次合并代码前都提心吊胆手拼的 SQL 字符串、明文密码、漏掉的 CSRF 校验会不会又溜进主干Semgrep 是一个开源的轻量级静态分析工具用长得像源码的模式直接做代码扫描支持 30 多种语言本地运行、代码默认不上传。这篇文章带你从跑通第一次扫描到读懂输出再到把团队踩过的坑写成规则。️ 代码评审拦不住同一类坑问题不在于没人 review而在于评审靠记忆上个月抓到的SQL 拼接这个月换个写法又混进来了。用 grep 去防也没用——它只认字符串grep 2找不到y x 1因为它不理解代码结构。Semgrep 的做法是语义化 grep按抽象语法树AST做模式匹配规则本身就是几行真实代码不用正则、不用 DSL。上图是扫描完成后的结果看板76 条发现按规则分组每条都有严重度、涉及文件和分支信息。下面先用命令行把第一个扫描跑起来。⚡ 三条命令完成首次代码扫描只需装、进、扫三步任何语言的项目都能跑pip install semgrep # macOS 也可用 brew install semgrep cd your-project semgrep scan --config auto--config auto会自动探测项目里有哪些语言并从内置规则注册表拉取对应的规则集。看到下面这种输出就说明一切正常Scanning across multiple languages: multilang | 54 rules × 36 files js | 179 rules × 8 files 47/47 tasks Findings: app.js 10: var app express();扫描在本地完成大项目通常也在秒级到分钟级。如果Findings下面是空的同样代表成功——只是这一轮没有命中。 读懂扫描输出看到什么才算正常别被满屏英文吓到输出就三层从上到下逐个看第一层规则与文件的对照表。js | 179 rules × 8 files表示 JavaScript 语言加载了 179 条规则、待扫 8 个文件。某一行 rules 是 0说明该语言没有可用规则不是报错。第二层进度。47/47 tasks表示所有扫描任务跑完。任务数由规则集大小决定中断或超时这里会明显小于总数。第三层Findings发现。每条发现包含四个要素——规则 ID点号分隔的长名字前缀通常是语言类别、一句人类可读的 message、命中的文件:行号、以及命中的代码片段。severity 分ERROR、WARNING、INFO三档ERROR优先看。一个常见疑问老项目一上来可能报几十条。别慌这是存量问题清单不代表代码比之前更糟——后面接入 CI 时可以只盯增量。✍️ 把项目踩过的坑写成规则六行 YAML 起步最实用的玩法不是跑通用规则而是把你们团队的约定变成机器检查。比如下面这条规则禁止 Python 代码里用print打日志rules: - id: no-print-in-prod languages: [python] pattern: print(...) message: 请用 logging.debug() 替代 print() severity: WARNING存成my-rules.yml然后semgrep scan --config my-rules.yml .就能生效。两个语法点先记住...匹配任意参数或表达式$VAR是捕获变量后面还能引用它做更精细的判断。临时排查可以不写文件直接-e内联查询例如找左右两边是同一个变量的可疑比较semgrep scan -e $X $X --lang py .想抄现成的话仓库里 tests/rules/ 放着 900 多条真实规则样例覆盖 Python、Java、Go 等主流语言根目录的 semgrep.yml 则是 Semgrep 团队扫描自己代码用的规则可以看到paths、metavariable-pattern等进阶写法。 接入 CI 与日常流程只讲两个最值得做的个人随手扫只是起点价值在于每次都跑。推荐只做两件事1. 每次 PR 自动扫描。以 GitHub Actions 为例加一个 step 即可- name: Run Semgrep uses: semgrep/semgrep-actionv1 with: config: p/security关键点配置成对 Pull Request 做扫描后Semgrep 只报告该 PR 新引入的问题。老代码的历史债不用先还完就能立刻开始用。2. 让 AI 助手顺手扫描。仓库自带 MCP 服务器见 cli/src/semgrep/mcp/在终端跑semgrep mcp后Cursor、VS Code、Claude Desktop 等 AI 编程工具可以直接调用 Semgrep 执行扫描、甚至帮你写规则。跑通semgrep scan --config auto .之后把上一步输出的某条发现点开看看再挑一条你们项目里反复出现的坏味道按本文 6 行模板写进自己的规则文件——规则库就长起来了。需要更多模式写法随时翻 tests/rules/ 里的样例。semgrep scan --config auto .【免费下载链接】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),仅供参考