HTML レポート¶
pyscn analyze が生成する HTML 出力の仕様です(--json/--yaml/--csv フラグが指定されない場合のデフォルト)。
ファイル特性¶
| プロパティ | 値 |
|---|---|
| パス | .pyscn/reports/analyze_YYYYMMDD_HHMMSS.html |
| エンコーディング | UTF-8 |
| 外部アセット | なし(CSS と JS はインライン) |
| 依存関係 | なし(CDN なし、リモートフォント読み込みなし) |
| サイズ | 通常 50〜500 KB |
ファイルは自己完結型で、アーカイブ、メール送信、任意の静的ホストからの配信が安全に行えます。
ドキュメント構造¶
| 要素 | 内容 |
|---|---|
| トップバー | pyscn バージョン、プロジェクト名とルート、生成タイムスタンプ、ファイル数、処理時間。 |
| タブバー | Overview と、実行された領域ごとのタブ。各タブに検出件数のバッジ。 |
| Overview | ヘルススコアのリングとグレード、1段落の総評、規模の数値、ディメンションごとのスコアカード、優先度の高い提案、ホットスポットファイル、複雑度ヒストグラム、重複・クラス・構造のサマリーカード。 |
| 詳細タブ | Functions、Duplication、Classes、Architecture。 |
| フッター | pyscn リポジトリへのリンクとバージョン文字列。 |
スコアカード、サマリーカード、タブは実行された分析器のみ表示されます。Architecture は依存関係・アーキテクチャ・コミュニティ分析のいずれかが実行された場合に表示され、レイヤールールは [architecture] のレイヤー設定が必要です。
Overview¶
| ブロック | 内容 |
|---|---|
| 総評 | リングで描いたヘルススコア(0〜100)、グレードバッジ(A〜F)、グレードに応じた見出し、クリーンなディメンションと最も弱い2〜3ディメンションを主要数値付きで挙げる一文。 |
| Score breakdown | 有効なディメンション(Complexity、Dead code、Duplication、Coupling、Cohesion、Dependencies、Architecture、Communities)ごとのカード。0〜100 のスコア、帯域で色分けしたバー、補足の数値2つ。カードは対応する詳細タブへリンクします。 |
| Fix first | 優先度上位5件の提案(重大度、労力、場所、理由)。 |
| Hotspot files | 高リスク関数数、最大複雑度、デッドコード、クローン断片数の順でランク付けした上位8モジュール。 |
| Complexity distribution | 設定されたリスクしきい値で区切った関数複雑度のヒストグラム。中央値、最深ネスト、最長関数付き。 |
| Duplication / Classes / Structure | 詳細タブへリンクするコンパクトなサマリーカード。 |
詳細タブ¶
| タブ | 内容 |
|---|---|
| Functions | 関数の複雑度メトリクス、最も複雑な関数(上位20)、クラス実行スコープの複雑度、最長関数、関数とクラススコープ内のデッドコード検出(上位20)、折りたたまれたソート可能テーブル2つ(全モジュール、ディレクトリ別複雑度)。 |
| Duplication | クローン統計の帯、クローングループ(上位10)と断片、任意でコードプレビュー。グループが形成されない場合はクローンペア。 |
| Classes | 結合度(CBO)と凝集度(LCOM4)の帯、最も結合度の高いクラスと最も凝集度の低いクラス(各上位15)。 |
| Architecture | モジュール依存メトリクス、メインシーケンスのゾーン、循環依存、最長チェーン、レイヤールール違反、コミュニティ検出とマクロアーキテクチャグラフ。 |
JavaScript¶
インラインスクリプトがタブを切り替え(選択タブは URL ハッシュに反映され、リンクで特定タブを開けます)、モジュールとディレクトリのテーブルを共通のソーターで処理します。ネットワークリクエストはありません。スタンドアロンの複雑度フォーマッターは、同じディレクトリメトリクスの下に関数とクラススコープを別々の表で表示します。
モジュールのロールアップは min_complexity、report_unchanged、min_severity の表示フィルタ適用前の全分析対象を使います。ディレクトリ別複雑度は複雑度フィルタ適用後の報告対象関数を使うため、その件数と平均は Functions タブと一致します。
CSS¶
スタイルは service/templates/analyze/report.css からインライン化され、CSS カスタムプロパティを使います。主なトークン:
| 変数 | 意味 |
|---|---|
--good / --warn / --bad |
スコア帯域(75以上、60〜74、60未満)、リスクレベル、重大度。 |
--accent |
ナビゲーション、リンク、中立的なグラフのバー。 |
--ink / --ink-2 / --muted |
本文、補助、キャプションのテキスト。 |
--surface / --page / --line |
カード、ページ背景、罫線。 |
ダークモードは prefers-color-scheme メディアクエリに従い、ルート要素の data-theme="light" または data-theme="dark" 属性で上書きできます。トグルは表示されません。
自動オープン動作¶
以下の すべて が真の場合、レポートはデフォルトブラウザで開かれます:
- 形式が HTML。
- stdin が TTY。
- 環境変数
SSH_TTYおよびSSH_CONNECTIONが未設定。 - 環境変数
CIが未設定。 --no-openが渡されていない。
オープン方法: macOS では open、Linux では xdg-open(または gnome-open / kde-open)、Windows では cmd /c start。
ファイル URL 形式: file:///{absolute-path-to-report}。
自動オープンの有無にかかわらず、レポートパスは常に stderr に出力されます。
自動オープンの抑制¶
または環境で CI=true をエクスポートします。
グレードバッジの対応表¶
| グレード | スコア | バッジの色 |
|---|---|---|
| A | 90〜100 | 緑(--good) |
| B | 75〜89 | 緑(--good) |
| C | 60〜74 | 琥珀(--warn) |
| D | 45〜59 | 赤(--bad) |
| F | 0〜44 | 赤(--bad) |