コンテンツにスキップ

ルールカタログ

pyscn は7つのカテゴリにわたる33のルールを提供しています。各ルールには、検出内容、なぜ問題なのか、悪い例、修正方法を説明するページがあります。

ルール名をクリックすると、そのページが開きます。

到達不能コード

制御フローグラフの到達可能性分析により検出される、実行されることのないデッドコードです。

ルール 重大度
unreachable-after-return Critical
unreachable-after-raise Critical
unreachable-after-break Critical
unreachable-after-continue Critical
unreachable-after-infinite-loop Warning
unreachable-branch Warning

重複コード

プロジェクト内のコピペまたはほぼコピペのコード断片です。

ルール 重大度
duplicate-code-identical Warning
duplicate-code-renamed Warning
duplicate-code-modified Info (オプトイン)
duplicate-code-semantic Warning

複雑度

テストや推論が困難なほど分岐の多い関数です。

ルール 重大度
high-cyclomatic-complexity By threshold

クラス設計

依存先が多すぎる、または無関係な仕事を多く抱えすぎているクラスです。

ルール 重大度
high-class-coupling By threshold
low-class-cohesion By threshold

依存性注入

テスト容易性を損なうコンストラクタやコラボレータのパターンです。

ルール 重大度
too-many-constructor-parameters Warning
global-state-dependency Error
module-variable-dependency Warning
singleton-pattern-dependency Warning
concrete-type-hint-dependency Info
concrete-instantiation-dependency Warning
service-locator-pattern Warning

モジュール構造

インポートグラフの問題:循環、長いチェーン、レイヤー違反です。

ルール 重大度
circular-import By cycle size
deep-import-chain Info
layer-violation By architecture rule
low-package-cohesion Warning
single-responsibility Warning / Error

モックデータ

本番環境に誤って含まれたプレースホルダーデータです。

ルール 重大度
mock-keyword-in-code Info / Warning
mock-domain-in-string Warning
mock-email-address Warning
placeholder-phone-number Warning
placeholder-uuid Warning
placeholder-comment Info
repetitive-string-literal Info
test-credential-in-code Warning

コマンドラインでのルール選択

ほとんどのユーザーは pyscn analyze ですべてのルールを実行します。CI では、アナライザカテゴリでフィルタリングできます:

pyscn check --select deadcode          # only unreachable-code rules
pyscn check --select clones            # only duplicate-code rules
pyscn check --select complexity        # only high-cyclomatic-complexity
pyscn check --select deps              # circular-import + deep-import-chain + layer-violation
pyscn check --select di                # all dependency-injection rules (opt-in)
pyscn check --select mockdata          # all mock-data rules (opt-in)
pyscn check --select complexity,deadcode,deps   # combine

詳細は pyscn check のフラグ一覧をご覧ください。

重大度の意味

重大度 意図
Critical ほぼ確実にバグです。マージ前に修正することを推奨します。
Error 高リスクなパターンです。通常、CI を失敗させるべきです。
Warning レビューする価値があります。pyscn check のデフォルトの失敗閾値です。
Info 情報提供のみです。min_severity = "info" または同等の設定時にのみ表示されます。
By threshold 重大度は数値の閾値に依存します(各ルールのオプションを参照)。