ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Semgrep:提交前 30 秒扫一遍代码的静态分析工具

Semgrep:提交前 30 秒扫一遍代码的静态分析工具 Semgrep提交前 30 秒扫一遍代码的静态分析工具【免费下载链接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.项目地址: https://gitcode.com/GitHub_Trending/se/semgrepcode review 时最烦的不是读新代码而是把 diff 里每个改动都往安全写法的角度上对一遍还总漏。Semgrep 的思路很直接用一段长得像源码的模式去匹配代码漏掉的pickle、缺参数的exec这类问题30 秒内列给你看。装完直接跑先扫出存量问题克隆仓库装依赖git clone https://gitcode.com/GitHub_Trending/se/semgrep cd semgrep pip install -e .跑一次 baseline只看新增问题全量扫描的噪音很大老代码里的历史欠账会把新问题淹没。--baseline-commit只报告相对基线提交新增的发现提 PR 前拿上一个提交做基线最合适semgrep scan --config auto --baseline-commit HEAD~1默认配置会自动按项目里出现的语言挑规则跑完的输出长这样左边是命中数右边是具体代码行只扫要审的目录--include和--exclude接受 glob把测试目录、生成代码挡在外面semgrep scan --config auto --exclude tests --exclude node_modules写一条规则抓住你团队的坏味道从内置规则里抄一段官方规则集就在仓库里Python 安全规则 这种写法可以直接改着抄。下面是抓pickle的典型片段rules: - id: no-pickle languages: [python] severity: ERROR message: 别反序列化不可信数据换 json pattern: pickle.loads(...)pattern支持省略参数pickle.loads(x)、pickle.loads(data, protocol4)都能命中不用写死参数。存到项目里跑一次验证规则放进仓库根目录的semgrep.yml然后semgrep scan --config semgrep.yml命中时会在输出里带上代码行和 messagereviewer 一眼能看懂问题出在哪接进流水线提交即检查GitHub Actions 加一个 job- name: Semgrep run: | pip install semgrep semgrep scan --config auto --error--error让命中非零退出CI 直接红掉问题拦在合并之前。其他平台同样一个命令GitLab CI、Jenkins 都是跑同一条semgrep scan只是位置不同仓库里 e2e 测试用的多语言目标项目 可以直接当扫描对象试。官方面向 CI 的命令在 cli/src/semgrep/commands/ci.py会多输出 SARIF方便平台展示。扫得慢、噪音大三个参数收一收指定规则子集auto会拉全部适用规则大仓库明显变慢。只留你关心的几个文件semgrep scan --config perf/r2c-rules/python.yml --config perf/r2c-rules/javascript.yml按规则 id 静音某条规则误报多不用删规则按 id 静音semgrep scan --config auto --exclude-rule no-pickle开满并行默认线程数保守CI 机器配置好的话直接拉高semgrep scan --config auto --jobs 16把no-pickle这条规则存到仓库根目录CI 里换成--config semgrep.yml --error下次提交就有机器帮你盯着 diff 了。【免费下载链接】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),仅供参考
返回列表