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

如何配置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将选中的文件路径传递给hook
  • args: ["${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.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:42:10