如何正确传递pre-commit参数减少terraform checkov钩子输出冗余?
让Checkov在pre-commit钩子中只输出失败检查项
Checkov确实是款优秀的工具,但它的默认输出过于冗余——终端会打印所有通过的检查结果,比如我遇到的场景里,直接输出了78项通过记录,导致真正需要修复的错误被淹没,甚至早期的报错内容都被截断了。
我把Checkov集成到pre-commit的Terraform检查集合中,初始配置如下:
- repo: https://github.com/antonbabenko/pre-commit-terraform rev: v1.76.0 hooks: - id: terraform_checkov - ...
通过checkov --help查到了两个能精简输出的参数:
❯ checkov --help | grep CLI --quiet in case of CLI output, display only failed checks. --compact in case of CLI output, do not display code blocks
但直接把这两个参数加到钩子的args字段时却报错:
❯ git add -A && pre-commit run terraform_checkov Checkov..................................................................Failed step - hook id: terraform_checkov - exit code: 1 getopt: unrecognized option '--quiet' getopt: unrecognized option '--compact'
问题出在terraform_checkov这个pre-commit钩子的参数解析逻辑上:直接添加Checkov的原生参数会被钩子脚本识别为无效选项。正确的做法是使用钩子提供的--checkov-args作为中转,把Checkov的参数传递进去。
修改后的配置如下:
- repo: https://github.com/antonbabenko/pre-commit-terraform rev: v1.76.0 hooks: - id: terraform_checkov args: ["--checkov-args", "--quiet", "--compact"]
这样配置后,钩子会将--quiet和--compact正确传递给Checkov,终端就只会显示失败的检查项,不会再被冗余的通过记录干扰。
内容的提问来源于stack exchange,提问作者Andreas L.
相关产品推荐
相关产品推荐

