Ruff は、Rust に基づいて書かれた高性能 Python コード分析ツール (つまり、Linter) です。これは、コード内の構文エラー、コーディング仕様の問題、潜在的なロジックの問題、およびコード品質の問題をチェックするために使用され、リアルタイムのフィードバックとコード品質の問題を提供できます。自動修復の提案。主な特徴は高性能であり、既存の同様のツールよりも 10 ~ 100 倍高速であると主張されています。
ラフコアの特徴
- pip経由でインストールする
- サポート
pyproject.toml
- Python 3.11と互換性があります
- 500 を超える組み込みルール (Flake8 の組み込みルール セットとほぼ同等)
- flake8-bugbear、flake8-comprehension など、数十の Flake8 プラグインを再実装しました。
- 自動修正をサポートし、エラーを自動的に修正します (未使用のインポートの削除など)
- 未変更ファイルの繰り返し分析を回避するための組み込みキャッシュ
- VS Code、Pycharm、Neovim、Sublime Text、Emacs およびその他のエディターをサポート
- モノリポジトリに適しており、階層化されたカスケード構成を備えています
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 ソース コードをトークンのストリームにトークン化する役割を果たします。その後、パーサーはこれを使用して抽象構文ツリー (AST) を構築します。レクサーは Ruff の分析パイプラインの最初のステップであり、Ruff が分析するすべてのファイルに対して実行されます。
したがって、レクサーのパフォーマンスを最適化すると、リンターのパフォーマンスが向上するだけでなく、Ruff フォーマッタなど、Ruff レクサーを利用する将来のツールのパフォーマンスも向上します。
新しいレクサーは、よりキャッシュに適したデータ構造を利用し、割り当ての実行を減らし、純粋な ASCII ソース コードの最適化を含みます。詳細をご確認ください。
その他の変更には、行末# ruff: noqa
コメントの無視やルールの追加などがあります。具体的な変更点については、こちらを参照してください。