Python 向けの構造的静的解析
pyscn¶
pyscn はコンパイラのように Python を読みます — 制御フローグラフ、構文木、インポートグラフ。行単位のリンターでは見つからないもの、return の後に取り残されたデッドコード、別名で複製されたロジック、静かに循環するモジュール依存を検出します。
検出内容¶
-
到達不能コード
CFG ベースの到達可能性解析で、
return/raise/break/continueの後や常に真になる分岐の先に残されたデッドコードを検出します。 -
重複コード
APTED の木編集距離と LSH の組み合わせで、完全一致・名前変更・構造変更・意味的類似の4種類のクローンを検出します。
-
複雑度
関数ごとのサイクロマティック複雑度を計測します。しきい値はプロジェクトごとに調整できます。
-
クラス設計
CBO 結合度と LCOM4 凝集度のメトリクスで、責務を持ちすぎる、あるいは持たなすぎるクラスを可視化します。
-
循環インポート
Tarjan の SCC アルゴリズムで、実行時に
ImportErrorになる前に循環依存を発見します。 -
モジュール構造
インポートグラフに対する Leiden クラスタリングで、本来ひとまとまりであるべきモジュールとそうでないモジュールを明らかにします。
インストール¶
詳しくは Installation をご覧ください。
クイックスタート¶
pyscn analyze . # full analysis, HTML report
pyscn check --select complexity,deadcode src/ # CI gate
pyscn init # generate .pyscn.toml
詳しくは Quick Start と ルールカタログ をご覧ください。
AI エージェント連携¶
Claude Code, Cursor, Codex, Gemini CLI、その他のコーディングエージェントに、各分析の使いどころを教える Agent Skills をインストールします。詳しくは Agent Skills をご覧ください。構造化されたツール呼び出しが必要な場合は MCP サーバー を使用してください。