Vize

ファイル間の複雑さ

Vize のファイル間の複雑さレポートは、Croquis によって作成されたプロジェクト グラフの概要です。それはではありません 診断ルール自体。これは、下流ツールがレポートに表示できる説明可能なスコアです。 プレイグラウンド、および将来のしきい値ベースのチェック。

モデルは 3 つの複雑さの信号を Vue にマッピングします。

  • テンプレート パス数: コンポーネントごとに 1 つのベース ポイントに加えて、v-ifv-for、および v-if 式のブール演算子。

  • ネストされた制御フロー: より深いテンプレート フローのコストが高くなります。 子コンポーネントまで続きます。

  • コンポーネント境界データ フロー: props、provide/inject、および reactive エッジは残ります 1 つのファイルに平坦化されるのではなく、境界を越えた信号として表示されます。

スコア

レポートでは、生の信号と派生スコアの両方が公開されます。

フィールド 意味
cyclomaticScore コンポーネントのベース数 + v-if + v-for + v-if のブール演算子。
cognitiveScore v-ifv-for、およびスコープ付きスロットにわたるコンポーネント ツリー テンプレートのネスト スコア。
totalScore ディメンション スコアの合計: テンプレート フロー、スロット、プロップ ドリル、グローバル状態、プロバイド/インジェクト、フォールスルー アトリビュート、およびリアクティブ グラフ。
band 人間側バケット: lowmoderatehigh、または extreme

生の入力では、スコアの背後にある次のような数値も保持されます。

信号 なぜそれが重要なのか
componentTreeVIfMaxDepth 親コンポーネントと子コンポーネントにわたる長い条件付きパスには、より多くの状態をテストする必要があります。
componentTreeVForMaxDepth コンポーネントの境界を越えてネストされたループにより、レンダリングとデータ形状の複雑さが増大します。
componentTreeScopedSlotMaxDepth スコープ付きスロットは親テンプレートと子テンプレートを結合するため、その深さは通常のスロット数とは別に追跡されます。
propDrillingEdgeCount 支柱エッジは境界を越えたデータ フローを示します。
provideInjectMaxDepth および provideInjectReferenceCount DI ツリーが深くまたは広範囲になると、所有権をローカルで検査することが難しくなります。
reactiveNodeCountreactiveEdgeCount、および reactiveCycleCount リアクティブ グラフは、宣言レベルの状態、影響、損失が発生しやすいサイクルをキャプチャします。

コンポーネントの境界

テンプレートの複雑さは 1 つの SFC に限定されません。 Croquis はモジュール レジストリとコンポーネントの使用法を構築します 最初にグラフを作成し、次にサイクル保護を使用してコンポーネントのエッジをウォークします。子を囲む親 v-if、 子の周囲の親 v-for、および子スコープのスロットはすべて同じコンポーネント ツリーに寄与します 巣作りの道。

これは、浅く見えるコンポーネントでも、スコープ指定されたスロットを転送するときに高いスコアを生成できることを意味します。 ドリルプロップ、または深い提供/注入パスに依存します。プレイグラウンドのクロスファイル モードでは、 診断の横にスコアが表示されるため、フィクスチャの編集中にそれらの信号が表示されます。

ホットスポット

このレポートでは、ランク付けされたホットスポットも公開されるため、ツールは、 プロジェクト レベルの数値を 1 つだけ表示するのではなく、スコアを表示します。各ホットスポットにはローカル スコア入力が含まれます。 ディメンション スコア、合計スコア、および主要なディメンション。 dominantDimension を使用して、その理由を説明してください。 エントリが High の場合、input を使用して、それを駆動した生の信号を表示します。

現在のサーフェス

パブリック JSON 形状は、WASM クロスファイル バインディングから次のように利用できます。 CrossFileResult.complexityReport および CrossFileResult.complexityHotspots。 CLI は失敗しない まだこのスコアに基づいています。レポートを探索シグナルとして使用し、安定したしきい値を促進します プロジェクト固有のベースラインが存在した後でのみ。