ルールカタログ¶
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 | 重大度は数値の閾値に依存します(各ルールのオプションを参照)。 |