グラフコマンド
codeknitは、コードベースの構造を理解し改善するための2つの強力なグラフコマンドを提供します:インタラクティブな可視化のためのgraph showと、自動構造分析のためのgraph analyzeです。
graph show
Section titled “graph show”コードベースのインタラクティブなHTMLグラフ可視化を生成します。
codeknit graph show <input-path>このコマンドはコードベースを解析し、インタラクティブなグラフ可視化を含む自己完結型のHTMLファイルを生成します。シンボル(関数、クラス、型)はノードとして表示され、それらの関係(呼び出し、包含、実装)はエッジとして表示されます。可視化は自動的にデフォルトのブラウザで開きます。
| フラグ | デフォルト | 説明 |
|---|---|---|
-o, --output |
./skeleton/codeknit-graph.html |
出力HTMLファイルのパス |
--collect-test |
false |
分析にテストファイルを含める |
--workers |
NumCPU |
最大同時解析ゴルーチン数 |
--verbose |
false |
処理中の進捗情報を表示する |
# デフォルトの可視化を生成codeknit graph show ./myproject
# カスタム出力ファイルcodeknit graph show ./myproject -o graph.html
# テストファイルを含めるcodeknit graph show ./src --collect-testgraph analyze
Section titled “graph analyze”コードベースに対して構造的なグラフアルゴリズムを実行し、コード品質の洞察を含むLLMが読み取り可能な.sktレポートを出力します。
codeknit graph analyze <input-path>このコマンドは、循環依存、ハブシンボル、デッドコード、ゴッドクラス、アーキテクチャのボトルネックなどの一般的なコード品質の問題を検出します。
アルゴリズム
Section titled “アルゴリズム”分析には17の構造的グラフアルゴリズムが含まれます:
- 循環依存(TarjanのSCC)
- ハブ検出(高ファンイン/ファンアウト結合)
- 孤立検出(デッドコード候補)
- ゴッドクラス/関数検出(過剰な子要素)
- 不安定性メトリック(Robert C. MartinのCe/(Ca+Ce))
- 深い継承チェーン
- 中間中心性(ボトルネック検出)
- 接続点(単一障害点)
- PageRank(再帰的重要度)
- 推移的ファンイン(影響範囲)
- 変更伝播シミュレーション
- 循環パッケージ依存
- レイヤー違反検出
- エントリーポイントからの到達可能性
- 弱連結成分
- 依存度(パッケージ結合強度)
- Main Sequenceからの距離(A+Iバランス)
| フラグ | デフォルト | 説明 |
|---|---|---|
-o, --output |
./skeleton/graph_analysis.skt |
出力.sktファイルのパス |
--collect-test |
false |
分析にテストファイルを含める |
--workers |
NumCPU |
最大同時解析ゴルーチン数 |
--verbose |
false |
処理中の進捗情報を表示する |
--fan-threshold |
10 |
ハブシンボルとしてフラグを立てる最小ファンインまたはファンアウト |
--god-threshold |
15 |
ゴッドクラス/関数としてフラグを立てる最小contains-エッジ数 |
--max-inheritance-depth |
5 |
これより深い継承チェーンをフラグする |
--top-n |
30 |
ランキング出力セクションの上限;0 = 無制限 |
--betweenness-threshold |
0.001 |
報告する最小中間中心性値 |
--propagation-cutoff |
0.05 |
変更伝播を続ける最小確率 |
# デフォルト設定で構造分析を実行codeknit graph analyze ./myproject
# カスタム出力と閾値codeknit graph analyze ./myproject -o analysis.skt --fan-threshold 15
# セクションごとに表示する結果を増やすcodeknit graph analyze ./myproject --top-n 50
# テストファイルを含めるcodeknit graph analyze ./src --collect-test