Skip to content

検出器の概要 ​

archlintには、特定されるアーキテクチャやコード品質の問題の種類ごとに分類された、28以上の組み込み検出器が備わっています。

TIP

誤検知: アーキテクチャ分析は、特に動的読み込み、リフレクション、または複雑な依存関係注入(DI)コンテナを使用しているプロジェクトにおいて、誤検知が発生することがあります。

依存関係の問題 ​

検出器ID説明デフォルト
循環依存cyclic_dependencyファイル間の循環依存✅
循環依存クラスターcycle_clusters複雑な循環依存の網✅
型の循環circular_type_deps型のみの循環依存❌
パッケージの循環package_cyclesパッケージ間の循環依存❌
レイヤー違反layer_violation定義されたアーキテクチャ階層の違反❌
SDP違反sdp_violation安定依存原則(SDP)の違反❌

モジュールとクラスの設計 ​

検出器ID説明デフォルト
ゴッドモジュールgod_module責任が多すぎるモジュール✅
ハブモジュールhub_module高度に接続された「ハブ」モジュール❌
低い凝集度lcom内部凝集度が低いクラス (LCOM4)❌
高い結合度high_coupling依存関係が多すぎるモジュール❌
分散モジュールmodule_cohesion機能が多すぎるファイルに分散している❌
機能への執着feature_envy自身のクラスより他のクラスを多く使うメソッド❌

コード品質と組織 ​

検出器ID説明デフォルト
デッドコードdead_code未使用のエクスポート✅
デッドシンボルdead_symbols未使用のローカル関数や変数✅
孤立した型orphan_typesコードベースに接続されていない型✅
バレル濫用barrel_file結合を引き起こす巨大なバレルファイル✅
基本データ型への執着primitive_obsessionドメイン型の代わりに基本型を過度に使用❌

複雑度とサイズ ​

検出器ID説明デフォルト
循環的複雑度cyclomatic_complexity循環的複雑度が高い関数✅
認知的複雑度cognitive_complexity認知的複雑度が高い関数✅
深いネストdeep_nesting深くネストされたコードブロック✅
多すぎる引数long_params引数が多すぎる関数✅
巨大なファイルlarge_fileサイズが大きすぎるソースファイル✅

変更パターン ​

検出器ID説明デフォルト
散弾銃の手術shotgun_surgery多くのファイルの変更を必要とする変更❌
不安定なインターフェースunstable_interface頻繁に変更される公開インターフェース❌

実行時と安全性 ​

検出器ID説明デフォルト
テストの漏洩test_leakageテストコードの本番環境への漏洩❌
ベンダー結合vendor_coupling外部ライブラリへの密結合❌
ハブ依存hub_dependency外部パッケージへの過度な依存❌
副作用のあるインポートside_effect_import副作用を引き起こすインポート✅
共有された可変状態shared_mutable_stateエクスポートされた可変変数❌

アーキテクチャ・メトリクス ​

検出器ID説明デフォルト
抽象性違反abstractness苦痛/無用ゾーン (I+Aメトリクス)❌
分散した設定scattered_config多くのファイルに分散した設定❌
コードクローンcode_cloneプロジェクト全体のコードの重複✅

Released under the MIT License.