在 PyCharm 中提交之前进行代码标准检查

问题描述 投票:0回答:1

我想在提交之前对 Python 代码进行一些分析,以温和地“执行”标准。

我想要一张支票,例如:

  • 新代码中没有打印
  • 方法长度不能超过 50 行
  • 方法中的参数不超过 4 个

(团队内部我们可以根据需要扩展列表)

这些应该仅作为警告,因为我不想在需要时阻止提交。

我正在研究 pycharm 设置/版本控制/提交/提交前分析/ 但这只是有时有效,并且只接受正则表达式。

有没有更好更简单的方法来做到这一点?

python git pycharm code-standards
1个回答
0
投票

在此上下文中,您可以使用一组(或多组)标准 Python linter,例如 flake8、pylint 或 black。最好使用单独的 linter 并签入配置,而不是特定的编辑器设置,因为不同的人可能使用不同的编辑器。但是,大多数主要编辑器可以以标准方式调用外部 lint 工具并在编辑器中显示 linting 输出。这使得开发人员可以在键入时看到任何相关更改并尽早纠正。

您提到您不想提交失败,因此您可以编写一个如下所示的

pre-commit
钩子:

#!/bin/sh

# Replace the line below with your preferred lint tool.
MY-LINT-TOOL
exit 0

这意味着检查将始终成功,因为它退出为零,但它将运行 linter 并显示输出。这是使用 Git 执行此操作的标准方法,但不一定保证所有编辑器都会显示该输出;这是实施质量问题。

请注意,无法在存储库中自动安装钩子,因为钩子可以执行任意代码,这将是一个安全漏洞。您可以为想要使用它们的人提供它们,并提供安装它们的脚本,但您也应该考虑并尊重有些人不想使用它们。如果您需要强制执行策略,则必须在服务器端完成,并且通常作为 CI 作业的一部分完成;客户端挂钩可以轻松绕过且不留任何痕迹。

您决定使用哪种 linter 由您决定并取决于您的特定需求。它们中的大多数将遵循 PEP 8 样式规则,这是 Python 的惯例,我会推荐这些规则(因为当语言具有强大的默认样式时,您通常应该更喜欢使用该语言的默认样式规则,无论它们是什么)。您可能决定使用多个选项,如果您有多种语言(例如在网络应用程序中),这也可能很有用。然而,在每次提交时运行所有这些可能会很慢,因此最好尽量减少钩子中运行的数量。

© www.soinside.com 2019 - 2024. All rights reserved.