新一代 Python 代码纠错工具Ruff,突出一个字“快”!

简介: 新一代 Python 代码纠错工具Ruff,突出一个字“快”!

在软件开发中,代码质量是至关重要的。为了保证Python代码的质量,开发人员需要使用一些优秀的代码检查工具。


下面是几个常用的Python代码检查工具:

  • Pylint:是一个流行的Python代码检查工具,用于检查代码语法、风格和代码错误等问题Pylint提供了丰富的插件和配置选项,方便开发人员根据项目要求进行定制和管理。
  • Flake8:是一个由Pint、Pyflakes和pep8三个库组成的Python代码检查工具,它可以检查语法错误、代码风格和各种代码错误等问题。Flake8具有高度的可配置性和易用性,是很多Python开发人员的首选。
  • Pyflakes: 是Python代码静态分析工具,用于检测Python代码中的语法错误和中未使用的变量和模块的问题,它也可以检查Python模块的导入语句的正确性。
  • mypy:一个类型注释检查器,用于检查Python代码的类型注释,以保代码中的注释与实际使用的变量和函数相匹配。


以上是几个常用的Python代码检查工具,它们帮助开发人员快速发现和复代码中的错误和漏洞,提高代码质量和可靠性。


但是最近又发现了一款开源的Python代码检查工具,相比 PylintFlake8 检查更迅速,兼容性更强。它名为 Ruff,GitHub Star 已达 21K


Ruff 简介


Ruff 是一个基于 Python 的代码检查工具,它可以帮助我们在编写Python代码时发现潜在的问题并提供修复建议。


GitHub: https://github.com/astral-sh/ruff


该项目采用 Rust 编写,比 Python 的 Flake8 和 Black 快 10-100 倍,支持通过 pip 安装、内置 700+ 规则、兼容 Python 3.12、自动纠错等功能。


凡是能用 Rust 重写开发的工具,结果就突出一个字“快”。这也是它为什么快的主要原因。


Ruff 利用 Rust Python 的 AST 解析器,实现自己的 AST 遍历、visitor 抽象和 lint 规则逻辑。它目标是比其他工具快几个数量级,同时提供代码检查、autofix等一站式的解决方案。


Ruff 可以用来替换flake8(加上各种插件)、isort、pydocstyle、yesqa、eradicate、pyupgrade和 autoflake,所有这些都比任何单独的工具执行速度快几十或数百倍。Ruff 超越了传统 linter 的职责,而是作为一种高级代码转换工具,能够升级类型注释、重写类定义、对import导入进行排序等等。


主要功能特点


从Ruff官方介绍,可以看到目前有以下特点:

  • 支持 pyproject.toml
  • 兼容 Python 3.11
  • 超过 500 条内置规则,与 Flake8 内置的规则集近乎对等
  • 重新实现了数十个 Flake8 插件,如 flake8-bugbear、flake8-comprehensions 等
  • 支持自动修复,可自动纠正错误(例如,删除未使用的导入)
  • 内置缓存,可避免重复分析未更改的文件
  • 支持 VS Code、Pycharm、Neovim、Sublime Text、Emacs 等编辑器
  • 对 monorepo 友好,具有分层和级联配置


其中着重的一点是对规则的支持。Ruff 借鉴了流行的工具如 Flake8、autoflake、isort、pyupgrade、yesqa 等等,然后用 Rust 重新实现了超过 500 条规则。它本身不支持插件,但是吸收了数十个常用的 Flake8 插件的设计,使得已囊括的规则范围比其它任何工具都大。例如实现了部分flake8的插件。


安装和使用


Ruff在安装上也是非常简单,可以像其他第三方Python包一样通过pip安装,只需按照以下步骤进行操作:

pip install ruff

安装完成后,Windows会在Python版本Scripts目录下生成一个ruff.exe的可执行文件;MacOS会在Python版本bin目录下生成一个ruff的可执行文件。


执行检查命令


1、针对指定文件扫描

ruff check path/file.py

2、使用通配符进行扫描

ruff check path/*.py

3、还可以在watch监控模式下运行 Ruff,当文件改变时自动执行:

ruff path/ --watch

4、按照不同的目录和文件执行检查

ruff check .                        # 分析当前及子目录内的所有文件
ruff check path/to/code/            # 分析指定目录及子目录内的所有文件
ruff check path/to/code/*.py        # 分析指定目录内的所有py文件
ruff check path/to/code/to/file.py  # 分析 file.py

5、还可以和 pre-commit 一起工作:

- repo: https://github.com/charliermarsh/ruff-pre-commit
  # Ruff version.
  rev: 'v0.0.261'
  hooks:
    - id: ruff

最终,Ruff将生成一个报告文件,其中包含了检查结果和问题的详细信息。我们可以根据报告中的建议来修复代码中的问题。


总结


Ruff 可以在代码质量、代码规范、团队协作、持续集成等多种场景下应用。而且还有官方提供的VS Code的插件,非常方便实用。但是目前还没有发布Pycharm的插件。

相关文章
|
1月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
140 26
|
1月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
199 1
|
1月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
126 1
|
20天前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
200 100
|
20天前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
233 95
|
28天前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
187 104
|
28天前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
329 99
|
20天前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
131 88
|
1月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
204 102
|
25天前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。

推荐镜像

更多