【问题标题】:pre-commit hook yapf returns different results than running yapf in the command line预提交钩子 yapf 返回的结果与在命令行中运行 yapf 不同
【发布时间】:2022-09-28 17:23:15
【问题描述】:

使用命令行和 yapf 运行文件时,我的标签如下:

-i --verbose --style \"google\"

当使用与 args 相同的参数进行预提交时,我的预提交挂钩始终返回“通过”。

这是针对相同文件针对相同更改进行测试的,因此我预计会得到类似的结果。如果我排除--style \"google\",我的预提交挂钩至少会更改我的文件格式,但不会更改为我想要的样式。

有人可以告诉我我在 args 上做错了什么吗?

包含示例的 Python 文件:

def hello_world():
    print(\"hello world\")




    if 5 == 5: print(\"goodbye world\")

.pre-commit-config.yaml 文件:

  - repo: https://github.com/pre-commit/pre-commit-hooks.git
    sha: v4.0.1
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer

  - repo: https://github.com/google/yapf
    rev: v0.31.0
    hooks:
      - id: yapf
        name: \"yapf\"

提交时,我的文件将更改,并且预提交告诉我 yapf 已将我的文件更改为以下内容:

def hello_world():
    print(\"hello world\")

    if 5 == 5: print(\"goodbye world\")

如果我回到同一个 python 文件并将我的 .pre-commit-config.yaml 文件更新为:

  - repo: https://github.com/pre-commit/pre-commit-hooks.git
    sha: v4.0.1
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer

  - repo: https://github.com/google/yapf
    rev: v0.31.0
    hooks:
      - id: yapf
        name: \"yapf\"
        args: [--style \"google\" ]

运行提交将提供Pass,而不是进行任何更改,即使是以前的更改

编辑1: .pre-commit.config.yaml 文件已更新为:

  - repo: https://github.com/pre-commit/pre-commit-hooks.git
    sha: v4.0.1
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
  - repo: https://github.com/google/yapf
    rev: v0.31.0
    hooks:
      - id: yapf
        name: \"yapf\"
        args: [--style, google]

运行 pre-commit run 只显示 Passed 而不是重新格式化。我还尝试使用 pep8 和其他任意词来代替 google。这些都导致Passed。也许在我这边有些东西样式 arg 被忽略并导致所有 yapf 失败?

  • 这是不可重现的——为了能够帮助您解决问题,您需要显示最少的代码集,以便我们可以看到您所看到的。在这种情况下,您需要至少一个python文件和你的问题中的配置
  • @AnthonySottile 对此感到抱歉,只是在我的配置中添加了一个明确的 python 文件示例。
  • 你有一个错字,你想要args: [--style, google]
  • @AnthonySottile 嗯,不幸的是,它似乎仍然无法正常工作。把它改成那个仍然只是给我Passed
  • 我无法重现,当我正确格式化 args 时,它确实修复了您在这篇文章中提供的代码

标签: pre-commit-hook pre-commit.com yapf


【解决方案1】:

这篇文章是不久前的,但对于以后阅读它的任何人来说,但我能够在我的父目录中使用 .style.yapf 来控制预提交中的 yapf 样式,如 yapf 文档中所述:@ 987654321@

这是我使用的 .style.yapf

[style]
based_on_style = google

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    相关资源
    最近更新 更多