Python Linter

2024 年 8 月 29 日 | 阅读 6 分钟

介绍: 在本文中,我们将讨论 Python linter。每天我们都被各种出色的指导方针包围着,它们让生活变得更加轻松。例如,司机必须遵守交通规则。

因此,每位司机都知道如何在路上行驶,以及必须遵守哪些规则。所以,使用变得更安全,驾驶员的行为变得可预测,并且每个人都知道如何驾驶,以便他人能理解他们的意图。

Python 有一个相当于道路交通规则的“Python Enhancement Proposal”(PEP)。

这份报告包含了一系列指南,旨在通过使您的 Python 代码更加优秀、可读和一致来提升它。遗憾的是,即使是有经验的程序员,有时也会努力记住 PEP 中写下的所有规则。因此,Python linter 应运而生。

什么是 Python linter?

Linter 是一个程序,它通过显示警告和错误来提供有关代码质量的提示。您可以发现 Python 代码中的错误、无效的代码模式、不符合规范的元素等等。Python linter 有许多优点,包括以下几点:

  1. 防止项目 bug。
  2. 使 Python 程序员的代码更易读。
  3. 拦截不必要的代码片段。
  4. 简化代码,降低复杂性。

当然,每种方法都有其缺点,如下所示:

  1. 这个过程可能需要一些时间。
  2. 某些错误可能需要注意。

有许多 Python linter 可供您在日常工作中选择。逻辑 linter 会通知您实际的代码错误,而统计 linter 则帮助程序员发现格式问题。下面将介绍如何安装和运行最流行的 linter,例如:

  1. Pylint (版本 2.12.1) 和
  2. Flake8 (版本 4.0)。

此外,您还将找到每个输出的比较。这可以帮助您选择最适合您需求的 linter。

示例: 在这里,我们提供一个用 Python 编写的低质量程序的示例。

这里我们列出了一些上述示例代码中的问题:

  1. 导入操作中的不必要的分号。
  2. 需要添加换行符和空格。
  3. 缺少文档字符串。
  4. global_value 和 argument 1 未使用。
  5. 命名风格错误。
  6. 使用错误的索引从列表中选择项。
  7. 除以零的表达式。
  8. 不存在的方法。
  9. 返回未定义的值。
  10. 不必要的 pass 语句。

问题是什么?

编写代码是一项需要深入思考的项目。需要同时关注许多事项。经常被忽视的一个问题是代码的可读性。虽然代码最终可以工作,但您需要对其进行修改,以便以后永远不必再次处理它。但实际上并非如此。您或您的团队成员将来都需要审查此代码。因此,您必须使您的代码对开发人员来说是可读和可行的。

上述问题的解决方案是什么?

创建更清晰代码的最简单方法之一是使用 linter 作为您的代码质量助手。

Linters 是代码分析器,可帮助您根据最佳实践创建格式良好的代码。Linter 会检查代码的每一行,并标记它检测到的任何样式问题。

通常,linter 会检测到

  1. 语法错误(缩进错误等)。
  2. 结构性问题,例如未使用的变量。
  3. 违反最佳实践。

过长的行。Linter 是一个灵活的工具。有些 linter 甚至允许您实时自动修复样式错误。这可以节省大量时间。

如何在 Python 中使用 linter?

Linter 可以安装为独立的工具,可以从命令行运行。这就是 linter 在代码编辑器中显示实时警告的方式。既然您已经知道了 linter 是什么以及它们解决的问题,那么是时候动手实践了。

首先,您将学习如何从命令行使用名为 flake8 的 Python linter。

下面将介绍如何使用名为 autopep8 的 linter。此 linter 还可以修复列表问题。最后,将 flake8 集成到 Visual Studio Code 中,以便在代码编辑器中查看样式问题。

1. Pylint: 现在我们来讨论 Python 中的 Pylint。Pylint 是一个 Python 的静态代码评估工具,可以检测著名的编程和样式错误、bug、无效的代码结构以及与编码要求不一致的地方。您还可以根据自己的需求自定义 Pylint,静默某些建议的错误。输出消息可以包括错误和关于主要编程问题的统计信息。

我们经常在编程/运行某个程序的过程中卡住或遇到错误。通常,您会在网上搜索帮助并运行您的代码。但是,如何理解网上发布的代码呢?解决此问题的一些常见方法是查看文档字符串和关于该代码的文章。

现在最大的问题之一是理解他人的程序。如果代码没有解释,例如注释或文档字符串,情况会更糟。作为一名程序员,您希望您的代码易于阅读和理解。为了解决这个问题,Python 提供了 pylint 模块。本文简要介绍了 pylint 模块以及提高代码分数的技巧。让我们开始吧。Pylint 是一个在运行此 Python 代码后列出错误信息的工具。Pylint 代码类似于 pyflakes、flake8 和 mypy。

Pylint 中的错误: Pylint 消息主要包含五种类型的错误,如下所示:

R - R 表示根据良好的编程实践重构您的代码。

C - C 表示您的代码违反了编码标准的约定。

W - W 表示有关样式问题或一些次要编程问题的警告。

E - E 表示一个错误。我有一个重要的编程问题。

F - F 表示一个致命错误,它会停止代码处理。

如何安装 pylint?

要安装 pylint,您的电脑上需要安装 Python 编译器。在您的电脑上打开命令提示符(Windows)/终端(Linux),然后输入以下命令:

通过输入以下命令检查您的 pylint 安装情况:

您应该会看到 pylint 版本“2.4.4”。您也可以重新安装 pylint 并检查安装。如果 pylint 已安装,屏幕将告知您要求已满足。

要使用 pylint 运行代码,我们使用以下代码:

如何在 pylint 中工作?

请记住下面的程序,它接受数字并打印它们的总和。

将上述程序保存在 linter.py 文件中。打开命令提示符/终端并输入以下命令:

使用 pylint 2.4.4 版本,您将看到下面的报告。消息可能会因版本而异。

低分并不意味着您的代码是错误的。分数表明您的代码在其他程序员眼中的理解程度。您应该根据报告中的建议来改进您的代码。

报告中的每个消息建议/项都带有一个消息格式,由 ID 和其含义组成。每个 ID 都以一个字母开头,其余为数字。每个字母表示一种消息类型。一些消息类型是:

序号消息类型扩张说明
1.R重构R 表示您应该根据良好的编程实践来重构您的代码。
2.C约定C 表示您的代码违反了编码标准的约定。
3.W警告W 表示有关样式问题或一些次要编程问题的警告。
4.EErrorE 表示一个错误。我有一个重要的编程问题。
5.F致命F 表示一个致命错误,它会停止代码处理。

让我们讨论一些提高分数的技术。

  1. ID C0326 指示了非法空格错误。您必须在符号和 = 符号之间加上空格。此规则适用于所有使用运算符紧跟在标识符后面的声明。
  2. ID C0304 对应于缺少换行符的建议。这意味着您必须在代码完成后添加空行。
  3. ID C0114 对应于缺少模块文档字符串的建议。这意味着您必须在顶部添加一个关于使用下面描述的程序的文档字符串。
  4. ID C0103 对应于无效名称的建议。可以通过以大写字母开头标识符来避免此问题。但是,类名通常被认为使用驼峰命名法。也就是说,类名以大写字母开头。

为避免此建议,让我们向 pylint 添加一个接受所有小写变量的正则表达式。这将在另一个示例中详细解释。

修改后的上述代码如下所示:

因此,Pylint 是 Python 中一个非常有用的 linter。