如何配置pre-commit实现Slither分别扫描src与test目录?
解决Slither与pre-commit集成时多参数报错问题
问题背景
Slither的CLI仅支持单个文件/目录作为参数,但pre-commit默认会传递空格分隔的多文件列表,导致执行报错。需要调整pre-commit配置,实现正确调用Slither扫描指定目录或单个文件。
解决方案1:每次调用仅传入单个文件
通过配置让pre-commit逐个传递文件给Slither处理:
- repo: local hooks: - id: slither-single-file name: Slither (single file analysis) entry: slither language: system args: ["${1}"] pass_filenames: true files: \.sol$
配置说明
pass_filenames: true:允许pre-commit将选中的文件路径传递给hookargs: ["${1}"]:仅取第一个传入的文件路径,适配Slither单参数要求files: \.sol$:仅匹配Solidity文件,避免传递无关文件
解决方案2:分别扫描src和test目录
如果希望直接扫描整个目录而非单个文件,可以为每个目录创建独立hook:
- repo: local hooks: - id: slither-src name: Slither (src directory analysis) entry: slither src language: system files: ^src/.*\.sol$ pass_filenames: false - id: slither-test name: Slither (test directory analysis) entry: slither test language: system files: ^test/.*\.sol$ pass_filenames: false
配置说明
pass_filenames: false:禁止pre-commit传递文件列表,直接使用entry中指定的目录路径files:匹配对应目录下的Solidity文件,确保只有这些目录下的文件变更时才触发对应hook- 两个独立hook分别处理
src和test目录,完全符合Slither单参数要求
验证方式
修改配置后,运行pre-commit run --all-files测试,确认Slither不再报多参数错误,且能正常完成扫描。
内容的提问来源于stack exchange,提问作者a.t.
相关产品推荐
相关产品推荐

