
Semgrep 静态代码分析完整指南从安装到 CI 的 4 步上手【免费下载链接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.项目地址: https://gitcode.com/GitHub_Trending/se/semgrep把x x写进生产代码、把测试片段忘了删这类问题人工评审很容易漏。Semgrep 静态代码分析用看起来像源码的模式把它们找出来支持 30 多种语言代码默认全部在本地分析不上传。Semgrep 靠什么找出问题这一节用两分钟讲清 Semgrep 的匹配原理看懂后再接触命令不会觉得抽象。规则写成源码的样子Semgrep 常被形容为面向代码的语义 grep运行grep 2只会匹配字符串2而 Semgrep 的 pattern 会按代码结构匹配。规则直接用你熟悉的语法书写$X这类元变量代表任意表达式$X $X就能命中任何同一个变量和自己比较的写法不需要正则或抽象语法树。原理与更多细节可以在仓库的 README.md 中查证。安装 Semgrep 的 3 条路径这一节按你手头的环境给出三种方式任选其一装完即可进入扫描环节。macOSbrew install semgrepUbuntu / Linux / WSLpython3 -m pip install semgrep不想装依赖用 Docker 直接跑docker run -it -v ${PWD}:/src semgrep/semgrep semgrep --help装完先确认一下版本命令能输出版本号就说明可用。跑一次真正的 Semgrep 扫描这一节会在一个真实目录上完成两次扫描让你立刻看到输出长什么样。用单个 pattern 搜代码semgrep -e $X $X --langpy path/to/src-e后面是要执行的 pattern--langpy指定语言最后给出目标路径。输出按文件列出命中位置适合临时查一类写法。加载现成规则包semgrep --configp/ci path/to/src--config可以指向远程 Registry 里的规则包如p/ci规则下载到本地后执行期间会向 semgrep.dev 上报伪匿名的规则使用指标。为自己的项目写 Semgrep 自定义规则会读规则字段就能写自己的检查。仓库的 tests/rules/ 里有大量真实规则文件可以参考。一条规则只有几个字段rules: - id: same-var-compare pattern: $X $X message: 同一个变量和自己比较多半是笔误 severity: ERROR languages: [python]id是规则标识pattern是源码模式message是命中时展示的信息severity是严重级别languages声明适用语言。把这个文件保存到项目里用--config指向它即可。把 Semgrep 接入 CI 流水线这一节把一次性扫描变成每次提交都执行的门禁。semgrep ci是面向构建环境的命令会同时扫描源码及其依赖。不安装也能跑CI 环境里不想装任何东西时拉取官方镜像、把代码目录挂载进容器即可docker run --rm -v ${PWD}:/src semgrep/semgrep semgrep ci先用-e $X $X --langpy在你自己的项目上跑一次。看得懂第一份输出你就知道下一步该让规则检查什么。【免费下载链接】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),仅供参考