Skip to content
Latchkey

Ruff vs Pylint - Pythonのリント速度と分析の深さ

RuffはRust製の極めて高速なlinterで、多くのツールを置き換えます。Pylintはより遅いものの、より深く、より意見の強い分析を行います。

Ruffは、多くのFlake8/pycodestyle/pyflakesのルールをRustで再実装することで、レガシーツールのごくわずかな時間でPythonをリント(さらにフォーマットも可能)します。Pylintは、Ruffがすべてはカバーしていない、より深いセマンティックチェックと設計ヒューリスティックを実行します。

RuffPylint
言語RustPython
速度非常に高速(桁違い)大規模なコードでは遅い
ルールの幅多くのFlake8/pluginを再実装深いセマンティック + 設計チェック
設定pyproject.toml [tool.ruff].pylintrc / pyproject
自動修正多くのルールで対応自動修正なし

Ruffが優れる点

Ruffは、保存ごと、コミットごとに摩擦なく実行できるほど高速であり、Flake8、isort、pyupgradeなどを1つのツールと設定に統合します。多くの問題を自動修正します。ほとんどのチームにとって、実際に強制しているリントルールをカバーします。

Pylintが優れる点

Pylintはより深い分析を行います。特定のロジックの問題を検出し、設計上の悪臭(引数が多すぎる、複雑さ)を指摘し、Ruffがすべては実装していない意見の強いチェックを適用します。Pylintの設計やリファクタリングの警告に依存しているなら、Ruffはまだ完全な置き換えではありません。

CIにおいて

多くのチームは、すべてのPRで高速なゲートとしてRuffを実行し、その深いシグナルのためにPylintをより低頻度(夜間やオンデマンド)で実行します。Ruffはpipelineのリント時間を劇的に削減し、Pylintは必要な箇所に深さを加えます。

結論

日常のCIには主要な高速linter兼formatterとしてRuffを使い、より深いセマンティックおよび設計チェックが欲しい場合にPylintを追加しましょう。両者は相互排他的というより補完的です。

関連ガイド