新一代 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中的装饰器:简化和增强你的代码
【10月更文挑战第32天】 在编程的世界中,简洁和效率是永恒的追求。Python提供了一种强大工具——装饰器,它允许我们以声明式的方式修改函数的行为。本文将深入探讨装饰器的概念、用法及其在实际应用中的优势。通过实际代码示例,我们不仅理解装饰器的工作方式,还能学会如何自定义装饰器来满足特定需求。无论你是初学者还是有经验的开发者,这篇文章都将为你揭示装饰器的神秘面纱,并展示如何利用它们简化和增强你的代码库。
|
1天前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
16 3
|
3天前
|
设计模式 缓存 测试技术
Python中的装饰器:功能增强与代码复用的艺术####
本文将深入探讨Python中装饰器的概念、用途及实现方式,通过实例演示其如何为函数或方法添加新功能而不影响原有代码结构,从而提升代码的可读性和可维护性。我们将从基础定义出发,逐步深入到高级应用,揭示装饰器在提高代码复用性方面的强大能力。 ####
|
1天前
|
算法 IDE API
Python编码规范与代码可读性提升策略####
本文探讨了Python编码规范的重要性,并深入分析了如何通过遵循PEP 8等标准来提高代码的可读性和可维护性。文章首先概述了Python编码规范的基本要求,包括命名约定、缩进风格、注释使用等,接着详细阐述了这些规范如何影响代码的理解和维护。此外,文章还提供了一些实用的技巧和建议,帮助开发者在日常开发中更好地应用这些规范,从而编写出更加清晰、简洁且易于理解的Python代码。 ####
|
4天前
|
缓存 测试技术 数据安全/隐私保护
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第29天】本文通过深入浅出的方式,探讨了Python装饰器的概念、使用场景和实现方法。文章不仅介绍了装饰器的基本知识,还通过实例展示了如何利用装饰器优化代码结构,提高代码的可读性和重用性。适合初学者和有一定经验的开发者阅读,旨在帮助读者更好地理解和应用装饰器,提升编程效率。
|
11天前
|
开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第22天】在Python的世界里,装饰器是一个强大的工具,它能够让我们以简洁的方式修改函数的行为,增加额外的功能而不需要重写原有代码。本文将带你了解装饰器的基本概念,并通过实例展示如何一步步构建自己的装饰器,从而让你的代码更加高效、易于维护。
|
8天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
12 3
|
13天前
|
开发框架 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第20天】在编程的海洋中,简洁与强大是航行的双桨。Python的装饰器,这一高级特性,恰似海风助力,让代码更优雅、功能更强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一步步深入其内涵与意义。
|
11天前
|
机器学习/深度学习 缓存 数据挖掘
Python性能优化:提升你的代码效率
【10月更文挑战第22天】 Python性能优化:提升你的代码效率
10 1
|
12天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
19 2