モジュール内の依存もつれとは
モジュール内でクラスやコンポーネントが無秩序に依存し合うと、次のような問題が静かに蓄積していきます。

技術的負債の温床になる
依存が複雑に絡み合うほど、一つの変更が予期しない箇所に波及するリスクが高まります。修正のたびに影響範囲の調査コストが膨らみ、やがて「触るのが怖いコード」が増えていきます。典型的な技術的負債であり、リファクタリングを先延ばしにするほど保守コストが膨らみます。
疎結合が成立しない
本来、モジュールは独立してテスト・変更・再利用できるべきです。しかし循環依存や層を越えた参照があると、モジュールを切り出したり、単体でテストしたりすることが難しくなります。その結果、変更の影響範囲を予測できない、依存を大量にモック化する必要がありユニットテストを書きにくい、新しいメンバーが全体像を把握するのに時間がかかる、といった問題が生じます。
依存のもつれは、日々の小さな「ついでの参照」の積み重ねで進行します。可視化する仕組みがなければ、負債が臨界点に達するまで気づけません。
SonarQubeのArchitecture機能
SonarQubeはこの問題に対し、専用の構成管理機能としてArchitectureを提供しています。コード解析時に依存関係グラフを自動抽出し、インタラクティブな図として表示します。追加の設定や手作業は不要で、通常の静的解析を実行するだけで利用できます。解析のたびに更新されるため、コードの現状を反映した依存関係マップになります。

循環依存のような構造上の問題も自動で検出し、図として提示します。別のツールを導入したり特別なルールを書いたりせず、普段のビルド・解析フローの中で依存のもつれに気づけます。
Request Removalで、もつれの解消をタスクにする
依存のもつれを見つけ、「このコンポーネント間の依存は本来あってはならない」と判断したら、次は修正です。ここで利用できるのが Request Removal 機能です。

削除対象の依存関係を選択して「Request removal」をクリックすると、次回以降の解析で該当箇所が通常のSonarQube Issueとして生成されます。修正すべき課題として正式に登録され、解消されるまで追跡できます。

生成されたIssueは、他のコード品質課題と同様に扱えます。担当エンジニアに割り当てたり、Quality Gateの条件に設定したりできます。
まとめ
モジュール内の依存もつれは、気づかないうちに技術的負債を蓄積させ、疎結合という設計原則を崩します。SonarQube Architectureは、通常の静的解析に組み込まれた形で依存関係を可視化し、もつれを検出します。さらに Request Removal を使えば、見つかった依存をIssueとして管理し、既存の開発フローで解消できます。
依存関係のもつれは、一度だけ大規模なリファクタリングを行うより、継続的な可視化とルール化で対処するのが現実的です。SonarQube Architectureはその土台を提供します。