Python代码扫描:Python代码规范与错误检查的利器-flake8详解与实践

目录

介绍

flake8的特点

安装&配置

使用经验

命令行参数

PyCharm中使用

命令行中使用

使用配置文件对项目进行扫描

屏蔽指定代码行中的指定检查项

参考资料


注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料将在公众号CTO Plus发布,请关注公众号:CTO Plus

在Python开发中,代码规范和错误检查是非常重要的环节。良好的代码规范可以提高代码的可读性和可维护性,而错误检查能够帮助我们及时发现和修复潜在的问题。在众多的代码规范和错误检查工具中,flake8是一个受欢迎且功能强大的工具。本文我将详细介绍flake8的特点、使用方法和实践经验。

本篇文章《Python代码扫描:Python代码规范与错误检查的利器-flake8详解与实践》属于【Python代码规范与扫描】系列内容的第六篇,前面五篇可以根据自己情况自行查阅,同时欢迎公众号CTO Plus后续的文章:

代码规范与静态扫描系列内容:

  1. 企业级Python代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码自动编排介绍
  2. 通读Python PEP8代码规范
  3. Python代码扫描:新一代 Python Linter工具Ruff
  4. Python代码扫描:提升Python代码质量的神器-pylint详解与使用指南
  5. Python代码扫描:轻量级Python静态代码分析工具pyflakes
  6. Python代码扫描:Python代码规范与错误检查的利器-flake8详解与实践
  7. Python代码扫描:静态类型检查的最佳选择mypy
  8. Python代码扫描:自动化移除Python代码中的冗余-autoflake使用技巧与实例
  9. Python代码扫描:Python代码格式化的利器-yapf详解与最佳实践
  10. Python代码扫描:一键格式化Python代码的黑魔法-black使用教程
  11. Python代码扫描:导入语句自动排序工具-isort使用指南与示例
  12. Python代码扫描:自动化修复Python代码风格的工具-autopep8详解与实例
  13. Python代码扫描:项目中的代码规范与错误检查-pyproject-flake8配置与使用方法
  14. Python代码扫描:企业级代码代码安全漏洞扫描Bandit

介绍

Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强。可以编写程序实现代码规范性检测。

和 Pylint 类似,Flake8 允许通过配置文件来自定义检查的内容。它有非常清晰的文档,包括一些有用的提交钩子,可以将自动检查代码纳入到开发工作流程之中。

Flake8 也可以集成到一些流行的编辑器和 IDE 当中,比如PyCharm,后面章节会介绍到。

Flake8 包含三个代码库,是“将 PEP 8、pycodestyle、Pyflakes、Pylint、McCabe(代码复杂性检查器)和第三方插件整合到一起,以检查 Python 代码风格和质量的一个 Python 工具”。

Ned Batchelder's McCabe script是一个Python代码分析工具,用于计算一个函数的McCabe复杂度。 McCabe复杂度是一种衡量代码复杂度的指标,它基于流程图中的节点和分支数量。 Batchelder的脚本使用AST(抽象语法树)分析Python函数,并计算其McCabe复杂度。此工具可用于评估代码的可维护性和理解复杂性。

flake8的特点

flake8是一个集成了多个工具的Python代码规范和错误检查工具,具有以下几个特点:

1. 综合性强:flake8集成了多个工具,包括pycodestyle、pyflakes和McCabe等,可以一次性检查出代码中的多种问题。这样可以减少工具的安装和配置,提高开发效率。

2. 灵活可定制:flake8提供了丰富的配置选项,可以根据项目的需求进行定制。我们可以通过配置文件或命令行参数来设置规则和忽略列表,以适应不同的项目和团队。

3. 易于集成:flake8可以与其他工具和环境集成,如编辑器、持续集成系统和代码审查工具等。这样可以在开发过程中实时检查代码,并及时给出反馈,提高代码质量。

4. 可扩展性强:flake8支持自定义插件,我们可以根据自己的需求定义自己的检查规则。这使得flake8可以适应不同项目和团队的需求。

安装&配置

我们可以在自己的虚拟环境下使用PIP安装:pip install flake8

PyCharm中配置Flake8

我们依然可以像前面的Ruff和pylint工具一样在我们的IDE编辑器中配置flake8检测工具,哦配置如下:

name:Flake8(随便写一个)

Program: `$PyInterpreterDirectory$/python`

Arguments: -m flake8 --max-line-length=130 --exclude venv,migrations $ProjectFileDir$ (可以根据自己的需求进行配置)

Working directory: `$ProjectFileDir$`

使用经验

在实际使用flake8的过程中,可以根据以下经验来提高检查的效果:

1. 配置规则:根据项目的需求,可以通过配置文件或命令行参数来设置规则和忽略列表。可以参考flake8的官方文档和社区的经验,选择适合自己项目的规则。

2. 定期检查:建议定期对代码进行检查,以保持代码的质量和可维护性。可以在代码提交前或持续集成环境中执行检查,帮助我们及时发现和修复问题。

3. 关注警告:除了错误,flake8还会输出警告信息。有时警告可能不是严重的问题,但也值得关注。可以根据项目的需求,决定是否修复警告。

4. 结合编辑器:建议在编辑器中集成flake8,以便在开发过程中实时检查代码。许多流行的编辑器,如VS Code和PyCharm,都提供了flake8的插件和集成功能。

接下来我将介绍下这块的使用

命令行参数

此处我总结下Flake8工具常用的一些命令行参数,其他的可以参考官方文档:

--max-line-length=<length>:设置每行的最大字符数,默认为79。

--ignore=<errors>:设置要忽略的错误代码,多个错误代码用逗号分隔。

--exclude=<patterns>:设置要排除的文件或目录模式。

--filename=<patterns>:设置要检查的文件或目录模式。

--max-complexity=<number>:设置函数的最大复杂度,默认为10。

--select=<errors>:设置要检查的错误代码,多个错误代码用逗号分隔。

PyCharm中使用

在需要检查的项目中,右键选择外部工具Flake8即可,此时就会输出我们代码的一些问题

也可以通过设置对指定目录进行排除扫描: $FilePath$ --exclude templates_module

命令行中使用

  1. 针对整个项目文件

如果要检查整个项目,直接在项目根目录下执行flake8指令即可,或者带上指定的目录

flake8 [options] path/to/dir 

  1. 针对单个文件

我们也可以针对指定的单个文件进行代码检测

flake8 [options] path/to/module.py 

flake8 pylint_test.py

  1. 针对某个检查项进行单个文件检测

如果只想检测某一个检查项,我们可以通过参数select来指定

flake8 --select=F401 filename.py

其中, --select=F401 表示仅检查未使用的变量,filename.py 表示要检查的 Python 文件的名称。

使用配置文件对项目进行扫描

我们可以在项目的根目录下新建一个.flake8的文件,我们指定flake8这款工具时,他会默认找根目录下的配置文件,然后根据这个配置文件对项目做扫描。

屏蔽指定代码行中的指定检查项

如果我们想屏蔽掉代码中指定的某行的检测,以及指定检测项的检测,flake8也可以轻松实现。

我们可以通过在指定代码行上使用注释和noqa来做标记:# noqa: F405

改成如下即可

忽略整个文件的所有错误的方法:

我们也可以在文件开头处加上 # flake8: noqa 即可实现不针对这个文件做任何的检测

noqa像在单独的行中一样,无法在文件顶部放置针对特定代码的注释。# flake8: noqa: F401乍一看可能起作用,但实际上仅被检测为# flake8: noqa,这意味着“忽略文件中的所有消息”。

总的来说,flake8是一个受欢迎且功能强大的Python代码规范和错误检查工具,可以帮助我们提高代码的质量和可维护性。它具有综合性强、灵活可定制、易于集成和可扩展性强的特点。通过使用flake8,我们可以一次性检查出代码中的多种问题,并及时修复。让我们一起使用flake8,打造规范且高质量的Python代码!

参考资料

  1. flake8配置:Configuring Flake8 — flake8 6.1.0 documentation
  2. flake8钩子:Using Version Control Hooks — flake8 6.1.0 documentation
  3. Flake8: Your Tool For Style Guide Enforcement — flake8 6.1.0 documentation
  4. GitHub - PyCQA/flake8: flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code.
  5. https://flake8.pycqa.org/en/latest/index.html#quickstart
  6. https://github.com/pycqa/flake8/blob/main/docs/source/index.rst
  7. Full Listing of Options and Their Descriptions — flake8 6.1.0 documentation
  8. Pylint 3.0.0a8-dev0 documentation
  9. Full Listing of Options and Their Descriptions — flake8 4.0.1 documentation
  10. Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(1)_pycharm 检查代码规范_SteveRocket的博客-CSDN博客
  11. https://blog.csdn.net/zhouruifu2015/article/details/129877179

Python专栏
https://blog.csdn.net/zhouruifu2015/category_5742543


更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。

关于公众号的描述访问如下链接


更多精彩,关注我公号,一起学习、成长

关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzIyMzQ5MTY4OQ==&mid=2247484278&idx=1&sn=2b774f789b4c7a2ccf10e465a1b9def6&chksm=e81c2070df6ba966026fd7851efa824b5e2704e3fd34e76228ca4ce64d93f7964cd4abe60f2b#rd

标准库系列-推荐阅读:


推荐阅读:

猜你喜欢

转载自blog.csdn.net/zhouruifu2015/article/details/131264442