Rust製の多言語対応CLI。1つのツールと設定ファイルで、リンター、コードフォーマッター、セキュリティスキャナー、保守性チェックを実行できます。
tonybaloney/wily
Gitの履歴をたどり、Pythonコードの複雑度や各種メトリクスの推移を追跡するコマンドラインツール。
- スター
- 1,336
- フォーク
- 73
- 未解決の Issue
- 43
- 最終コミット
- 10 日前
これは何?
Wilyは、Pythonコードを時間軸に沿って計測するコマンドラインアプリケーションです。gitでブランチ内の各リビジョンを順にたどり、各コミットのファイルに複雑度やコード解析のメトリクスを適用して、結果をローカルの.wily/ディレクトリにキャッシュします。
このキャッシュを使って、サイクロマティック複雑度、保守性指数、Halsteadメトリクス、コード行数などがリビジョン間でどう変化したかをレポートしたり、特定のメトリクスでファイルを順位付けしたり、推移をグラフにしてブラウザーで表示したりできます。diffコマンドは現在のファイルを指定したgit refと比較するため、pre-commitフックやCIチェックにも利用できます。
メトリクスは演算子(cyclomatic、cognitive、maintainability、halstead、raw)ごとに分類され、wily.cfgファイルで設定できます。Jupyterノートブックはデフォルトでスキャンされ、セル単位でレポートすることもできます。
主な機能
- 01ブランチ内のgitコミットをたどってメトリクスのキャッシュを作成します。
- 02wily reportでリビジョン間のメトリクスの差分をレポートします。
- 03指定したメトリクスでディレクトリ内のファイルを順位付けします。
- 04wily graphでメトリクスの推移をグラフ化し、ブラウザーに表示します。
- 05wily diffで現在のコードを任意のgit refと比較します。
- 06.ipynbノートブック内のPythonコードをスキャンし、必要に応じてセル単位で解析します。
ユースケース
- コミット履歴を通じてPythonコードベースの複雑度が増しているかを追跡する。
- 変更によって以前のリビジョンより複雑度が増した場合に、CIチェックやpre-commitチェックを失敗させる。
- リファクタリングの優先順位を決めるため、プロジェクト内で最も複雑なファイルを見つける。
- Jupyterノートブックを活用するデータサイエンスプロジェクトで、コード品質の推移を監視する。
クイックスタート
- 1
PyPI から pip で wily をインストールします
pip install wily - 2
git リポジトリ内のソースフォルダー用に wily のキャッシュを構築します
wily build src/ - 3
解析対象ファイルの複雑度の変化をレポートします
wily report src/
使う前に知っておきたいこと
- Python コードのみを解析します。
- 履歴の追跡には git リポジトリが必要です。また、キャッシュを構築するには作業コピーがクリーンな状態である必要があります。
収録されている特集
トピック
よくある質問
- wily とは?
- Gitの履歴をたどり、Pythonコードの複雑度や各種メトリクスの推移を追跡するコマンドラインツール。 Wilyは、Pythonコードを時間軸に沿って計測するコマンドラインアプリケーションです。gitでブランチ内の各リビジョンを順にたどり、各コミットのファイルに複雑度やコード解析のメトリクスを適用して、結果をローカルの.wily/ディレクトリにキャッシュします。
- wily は無料で使えますか?ライセンスは?
- wily は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- wily は今もメンテナンスされていますか?
- 活発にメンテナンス中。wily の最終コミットは 2026年10月28日 です。
- wily は何に使えますか?
- コミット履歴を通じてPythonコードベースの複雑度が増しているかを追跡する。 変更によって以前のリビジョンより複雑度が増した場合に、CIチェックやpre-commitチェックを失敗させる。 リファクタリングの優先順位を決めるため、プロジェクト内で最も複雑なファイルを見つける。 Jupyterノートブックを活用するデータサイエンスプロジェクトで、コード品質の推移を監視する。
- wily のインストール方法は?
- PyPI から pip で wily をインストールします: pip install wily git リポジトリ内のソースフォルダー用に wily のキャッシュを構築します: wily build src/ 解析対象ファイルの複雑度の変化をレポートします: wily report src/
- wily はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/tonybaloney/wily
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
関数のMcCabe循環的複雑度を計算し、flake8プラグインとして複雑すぎるコードを検出するPythonツールです。
Pythonコードを実行せずに解析し、エラーの検出、コーディング規約の適用、コードスメルの指摘を行う静的解析ツールです。
一貫性のあるシンプルなPythonのコードスタイルを徹底し、複雑なコードパターンを検出する、厳格で独自の方針を持つflake8プラグイン。
コードをインポートせずに解析し、スタイルチェックは行わずにエラーを検出するPython linter。
プロジェクトごとに設定できる200以上のルールで、Swiftのスタイルや規約をチェックするリンターです。