配置 PyCharm 的自动代码检查

为了管控代码与提高代码质量,需要对代码进行代码检查。通常我们会通过IDE自带功能或者第三方工具。本节的主要内容是讲解 PyCharm 自带的代码检查如何配置,如何使用与运行,也会简单介绍第三方工具 Pylint 在 PyCharm 如何配置与使用。

1. 代码检查主要功能

PyCharm 的代码检查功能也是相较于其它Python IDE 表现更为突出的功能,主要功能如下:

  • PyCharm 具有强大、快速和灵活的静态代码分析功能, IDE可以查找和突出显示各种问题,查找死代码,查找可能的错误,拼写问题,并改进整个代码结构。

  • 检查不仅检测编译错误,还检测不同的代码效率低下。每当有一些无法访问的代码、未使用的代码、非本地化的字符串、未解析的方法、内存泄漏时,都会很快找到它。

  • PyCharm的代码分析可灵活配置。您可以启用/禁用每个代码检查并更改其严重性、使用自定义检查集创建配置文件、在不同的范围内以不同的方式应用检查、禁止特定代码片段中的检查等。

  • 每次检查都有一个严重级别 -问题会影响代码的程度。在编辑器中以不同的方式突出显示严重性,以便快速区分关键问题和不太重要的事情。

2. 代码检查配置

2.1 基本配置

在主菜单上, PyCharm/File -> Preferences/Settings -> Editor -> Inspections, 在这可以进行检查项的启用与禁用,以及每个检查项的严重级别、检查范围,也可指定自己的配置文件。

图片描述

2.2 定制自己的配置文件

PyCharm 允许你为代码验证分析配置设置,并将其保存为检查配置文件。你可以自定义现有检查配置文件(包括默认配置文件)并创建新的检查配置文件。你还可以共享、导入和导出检查配置文件。

PyCharm 区分 IDE 和项目配置文件。

存储在 IDE 中
这些配置文件保存在应用程序配置目录中(例如Mac,~/Application Support/JetBrains/PyCharm2020.1/inspection),可用于任何项目。Default 配置是存在IDE中的。

存储在项目中
这些配置文件保存在特定项目的 .idea 目录中(例如,$PROJECT_DIR/.idea/ 检查配置文件)。

Tips:通常在实际工作中,会把配置文件存在项目中,并通过 VCS 共享。在配置新项目配置文件并与团队的其他成员共享后,此配置文件将在VCS 签出项目后自动共享到我们的项目。

点击齿轮设置按钮,通过拷贝默认的配置,在项目下或者 IDE 创建新的配置文件。

图片描述
拷贝的附本是与默认配置一致的,我们可以在附本中对检查项启用或者禁用,也可重新规定严重级别与检查范围等,最后点击 Apply,就创建了自己的配置文件。

图片描述

3. 运行代码检查

3.1 自动检查打开的文件

PyCharm 自动分析编辑器中打开的文件中的代码,并在键入时突出显示异常代码。

图片描述

将鼠标悬停在条带上的标记上,以查看工具提示中检测到的问题。单击标记可跳转到相应的代码字符串。对于大多数代码问题,PyCharm 提供了快速修复,可以按 ⌥⏎(Alt +Enter) 显示所有建议。

图片描述
Tips :通过按 F2 可以在编辑器中从一个突出显示的字符串导航到另一个字符串。

3.2 指定范围运行代码检查

step1:在编辑器中打开所需的文件。或者,在"Project"工具窗口中选择文件或目录( 按住 Ctrl/⌘)。初始检查范围将限于打开的文件或选择;
step2:在主菜单上,选择 code -> inspection code
step3:将打开 “Specify Inspection Scope” 对话框, 指定应检查哪些文件。

图片描述
step4:单击"ok"以运行代码分析。 并在 Inspection Results 工具栏查看结果。
图片描述

step5:尝试修复问题。在检查结果工具窗口中,选择代码问题,击右键,会显示修复建议,如果没有修复建议,只能跳转到源代码手工修改。(虽然警告信息可能不影响程序运行,从代码规范来讲,也应该尽量减少警告信息的数量)。

图片描述
Tips:PyCharm 允许禁止对特定语句、函数/方法、标记进行某些检查。可以通过 Suppress for Function 或者 Suppress for Class实现。

图片描述

3.3 按名字进行代码检查

step1:在编辑器中打开所需的文件。或者,在"Project"工具窗口中选择文件或目录( 按住 Ctrl/⌘)。初始检查范围将限于打开的文件或选择。

step2: 在主菜单上,选择 code -> Run inspection by name。在打开的弹出框中,键入检查名称,键入时,建议列表将收缩,仅显示匹配的检查。

图片描述

Tips:后面的操作与指定范围操作是一致的。

3.4 通过命令行进行代码检查

对于大型项目,执行定期的代码检查,这是尤其重要的。在持续集成、持续交付、持续部署(CI/CD)中执行代码检查也是重要的环节。我们可以从命令行启动检查器,而无需实际运行 PyCharm。

命令行参数:

  1. 启动器路径(Path to the launcher):指定到启动器完整路径(位于 PyCharm 安装的 bin 目录下,必须指定完整的路径):
    Windows:: inspect.bat
    UNIX 和 macOS:inspect.sh
    
  2. 项目文件路径(Project file path): 是包含要检查的项目的目录的完整路径。
  3. 检查配置文件路径(Inspection profile path ): 是配置文件的完整路径。
  4. 输出路径(Output path): 是要存储报告的完整路径。
  5. 可选参数: 要检查的目录 -d [到子目录的完整路径]
    输出日志的详细级别 -vX ,其中 X 为 0 表示简单,1 表示较细,2 表示详细。

MAC 例子:

Applications/PyCharm.app/Contents/bin/inspect.sh ~/PycharmProjects/untitled2 ~/PycharmProjects/untitled2/.idea/inspectionProfiles/default_copy.xml  ~/PycharmProjects/untitled2/results-dir -v2

Tips:执行命令时,请关闭PyCharm。

查看结果

  1. 在主菜单上,选择 Code -> View Offline Inspection Results
  2. 在打开的"Select Path "对话框中,导航到包含 XML 格式的检查结果的目录。
  3. 单击"OK"。检查结果显示在"Inspection results"工具窗口中的"Offline View "选项卡中。

图片描述

4. Pylint

Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码。如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等。Pylint 还有一个好处是它的高可配置性,高可定制性。

Tips: PyCharm 本身提供的代码检查已经非常丰富了,如果不是特别要求,笔者不建议在PyCharm里使用Pylint。但毕竟Pylint 是著名的代码分析工具,PyCharm也是支持的。所以,本节只简单介绍如何在PyCharm 配置 pylint。

4.1 安装 pylint

想要使用 pylint 需要先安装:

pip install pyint

4.2 配置 Pyint 在 PyCharm

  1. 在主菜单上依次点击: PyCharm/File -> Preferences/Settings -> Tools -> External Tools

图片描述
Tips:如想加更多参数,请参考 Pylint运行参数

  1. 点击 “OK”, 添加外部工具成功。
    图片描述

  2. 重启PyCharm, 主菜单 Tools -> External Tools -> pylint。

图片描述
4. 查看输出。

图片描述

5. 小结

代码检查是保证代码质量的有效手段,很多公司都要求程序员在提交代码时根据定制的检查配置进行代码检查,达不到要求,可能导致提交失败。在持续集成过程中,在最新代码被构建后也会先运行代码静态走查,只有输出结果符合公司的代码规范,才会进行单元测试等后续过程。所以,掌握如何进行代码检查,并且根据提示做出修正是作为开发人员必要技能。

图片描述