You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Bandit安全测试加入Makefile时报错make: *** [bandit] Error 1求助

问题原因及解决方案

核心原因

Bandit 在检测到安全漏洞时会返回退出码1,而 Make 会将任何非0的命令退出码视为执行失败,因此即使你能看到正常的安全报告,Make 仍会抛出make: *** [bandit] Error 1的错误。

单独执行命令时,Shell 默认不会因退出码1终止执行,但 Make 对命令退出状态的检查更严格,只要非0就判定目标执行失败。

解决方案

根据你的需求,有两种常用处理方式:

方式1:区分“检测到漏洞”和“执行出错”

如果希望仅在 Bandit 真正执行出错(比如配置文件无效、路径不存在)时触发 Make 错误,而检测到漏洞时只输出报告不报错,可以修改 Makefile 命令:

.PHONY: bandit
bandit:
    pip install bandit && bandit -c pyproject.toml -r . --confidence-level high -f json -q || [ $$? -eq 1 ]

这个写法的逻辑是:若 Bandit 返回退出码1(仅检测到漏洞),则判定命令成功;只有返回其他非0码(代表执行出错)时,才让 Make 报错。

方式2:强制 Bandit 始终返回0退出码

如果你不需要区分两种情况,只想让命令稳定执行并输出报告,可以使用 Bandit 的--exit-zero参数,让它无论是否发现漏洞都返回0:

.PHONY: bandit
bandit:
    pip install bandit && bandit -c pyproject.toml -r . --confidence-level high -f json -q --exit-zero

注意:这种方式会掩盖 Bandit 真正的执行错误,仅适合只关心报告输出、不要求流水线因漏洞失败的场景。

补充建议

在 GitHub Actions 流水线中,若你的预期是“检测到漏洞时让流水线失败”,那当前的报错是正常的——这正是安全测试的预警机制,你需要根据报告修复漏洞后,流水线才会正常通过。

内容的提问来源于stack exchange,提问作者Cady Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:37:43