Repolode
jendrikseipp

jendrikseipp/vulture

Pythonプロジェクト内の未使用コードや到達不能コードを検出する静的解析ツール。

スター
4,875
フォーク
209
未解決の Issue
76
最終コミット
26 日前

これは何?

VultureはPythonのファイルやディレクトリをスキャンし、定義されているものの一度も使われていない関数、クラス、属性、変数、import、到達不能な分岐などを検出します。抽象構文木を静的解析するため、コードは実行しません。各検出結果には60%から100%の信頼度が付与され、--min-confidenceフラグを使うと、確度の低い推測を除外して、確実なデッドコードだけを報告できます。

Pythonは動的な言語であるため、Vultureがデッドコードを見逃したり、暗黙的に呼び出されるコードを誤検出したりする場合があります。誤検出に対処するため、使用されているものとして扱うホワイトリストファイル、名前・デコレーター・パスに対するglobベースの除外ルール、pyproject.tomlによる設定をサポートしています。結果はサイズ順に並べ替えて、優先的にクリーンアップする箇所を決めることもできます。

VultureはCLIとして実行できるほか、Pythonモジュールとして呼び出したり、API経由でプログラムから利用したり、pre-commitフックに追加したりできます。出力形式はpyflakesと同じです。

主な機能

  • 01未使用の関数、クラス、メソッド、属性、変数、importを検出
  • 02return、raise、break、continueの後にある到達不能コードを検出
  • 03信頼度を付与し、--min-confidenceで結果を絞り込み
  • 04誤検出を抑制するホワイトリストファイルに対応
  • 05pyproject.tomlで設定でき、Python APIとしても利用可能

ユースケース

  • デッドコードが蓄積した大規模なPythonコードベースの整理
  • ライブラリとそのテストスイートの両方にVultureを実行して、テストされていないコードを発見
  • pre-commitやCIでデッドコードのチェックを自動実行

クイックスタート

  1. 1

    PyPIからVultureをインストールします

    pip install vulture
  2. 2

    Pythonスクリプトまたはパッケージディレクトリに対してVultureを実行します

    vulture myscript.py mypackage/

使う前に知っておきたいこと

  • Pythonは動的な性質を持つため、未使用コードを見逃したり、暗黙的に呼び出されるコードを未使用と報告したりすることがあります。
  • 100%未満の信頼度は、非常に大まかな推定値です。

トピック

よくある質問

vulture とは?
Pythonプロジェクト内の未使用コードや到達不能コードを検出する静的解析ツール。 VultureはPythonのファイルやディレクトリをスキャンし、定義されているものの一度も使われていない関数、クラス、属性、変数、import、到達不能な分岐などを検出します。抽象構文木を静的解析するため、コードは実行しません。各検出結果には60%から100%の信頼度が付与され、--min-confidenceフラグを使うと、確度の低い推測を除外して、確実なデッドコードだけを報告できます。
vulture は無料で使えますか?ライセンスは?
vulture は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
vulture は今もメンテナンスされていますか?
活発にメンテナンス中。vulture の最終コミットは 2026年10月12日 です。
vulture は何に使えますか?
デッドコードが蓄積した大規模なPythonコードベースの整理 ライブラリとそのテストスイートの両方にVultureを実行して、テストされていないコードを発見 pre-commitやCIでデッドコードのチェックを自動実行
vulture のインストール方法は?
PyPIからVultureをインストールします: pip install vulture Pythonスクリプトまたはパッケージディレクトリに対してVultureを実行します: vulture myscript.py mypackage/
vulture はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/jendrikseipp/vulture

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト