Ruff v0.0.281 发布,Rust 编写的高性能 Python 代码分析工具

liftword2周前 (05-11)技术文章9

Ruff 是基于 Rust 编写的高性能 Python 代码分析工具(即 Linter),用于检查代码中的语法错误、编码规范问题、潜在的逻辑问题和代码质量问题等,可以提供实时反馈和自动修复建议。其主打的特性是高性能,宣称比现有的同类工具快 10~100 倍。

Ruff 核心特性

通过 pip 安装

支持 pyproject.toml

兼容 Python 3.11

超过 500 条内置规则,与 Flake8 内置的规则集近乎对等

重新实现了数十个 Flake8 插件,如 flake8-bugbear、flake8-comprehensions 等

支持自动修复,可自动纠正错误(例如,删除未使用的导入)

内置缓存,可避免重复分析未更改的文件

支持 VS Code、Pycharm、Neovim、Sublime Text、Emacs 等编辑器

对 monorepo 友好,具有分层和级联配置

Ruff 刚刚发布了 v0.0.281 版本。

主要变化是提升词法分析器速度。据称 Ruff 的词法分析器现在比旧版本快 2-3 倍:

group                       v0.0.280                               v0.0.281
-----                       --------                               --------
lexer/large/dataset.py      2.18    665.9±5.64us    61.1 MB/sec    1.00    304.9±3.79us   133.4 MB/sec
lexer/numpy/ctypeslib.py    2.39    154.4±0.84us   107.8 MB/sec    1.00     64.5±0.61us   258.1 MB/sec
lexer/numpy/globals.py      2.89     18.1±0.14us   163.3 MB/sec    1.00      6.3±0.06us   471.8 MB/sec
lexer/pydantic/types.py     2.57    326.4±2.23us    78.1 MB/sec    1.00    127.2±0.71us   200.5 MB/sec

词法分析器负责将 Python 源代码标记为 token 流,然后解析器使用这些标记来构建抽象语法树 (AST)。词法分析器是 Ruff 分析管道中的第一步,在 Ruff 分析的每个文件上运行。

因此优化词法分析器性能不仅可以提升 linter 性能,还可以提升未来利用 Ruff 词法分析器的工具(例如 Ruff 格式化程序)的性能。

新的词法分析器利用更多缓存友好的数据结构,执行更少的分配,并包括对纯 ASCII 源代码的优化。详情https://github.com/astral-sh/RustPython-Parser/pull/38https://github.com/astral-sh/RustPython-Parser/pull/38。

其他变化包括忽略行尾# ruff: noqa 注释,以及新增更多规则,具体变化点此查看https://astral.sh/blog/ruff-v0.0.281。

相关文章

php源码安装(php源码安装扩展)

php介绍PHP即“超文本预处理器”。PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。php的应用服...

PyKDL 运动学动力学库-安装(源码编译方式)

视频讲解:PyKDL 运动学动力学库-安装(源码编译方式)_哔哩哔哩_bilibilihttps://github.com/orocos/orocos_kinematics_dynamicspip3...

从小白到专家 PG技术大讲堂 - Part 2:PG源代码安装

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注...

源码安装包管理(源码安装是什么意思)

1. 源码包基本概述2. 源码包的好处3. 源码包的获取4. 源码包分类5. 源码包的安装5.1 configure脚本的功能5.2 编译安装注意事项5.3 源码包编译实例1. 源码包基本概述在lin...

Python RPC 之 Thrift(Python rpc)

thrift-0.12.0 python3.4.3Thrift 简介:Thrift 是一款高性能、开源的 RPC 框架,产自 Facebook 后贡献给了 Apache,Thrift 囊括了整个 RP...

「Python入门」之Python和Pycharm的安装教程

Python简介Python是一种计算机程序设计语言,它结合了解释性、编译性、互动性和面向对象的脚本语言,非常简单易用。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的...