您现在的位置是:首页 > 文章详情

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

日期:2023-08-01点击:91

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.64µs 61.1 MB/sec 1.00 304.9±3.79µs 133.4 MB/sec lexer/numpy/ctypeslib.py 2.39 154.4±0.84µs 107.8 MB/sec 1.00 64.5±0.61µs 258.1 MB/sec lexer/numpy/globals.py 2.89 18.1±0.14µs 163.3 MB/sec 1.00 6.3±0.06µs 471.8 MB/sec lexer/pydantic/types.py 2.57 326.4±2.23µs 78.1 MB/sec 1.00 127.2±0.71µs 200.5 MB/sec

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

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

新的词法分析器利用更多缓存友好的数据结构,执行更少的分配,并包括对纯 ASCII 源代码的优化。详情

其他变化包括忽略行尾# ruff: noqa注释,以及新增更多规则,具体变化点此查看

原文链接:https://www.oschina.net/news/251902/ruff-0-0-281-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章