ライブラリとしての利用
big-code-analysis は Rust ライブラリとして crates.io に公開されています。CLI(bca)と REST サーバー(bca-web)はどちらも同じ公開 API の薄いラッパーなので、それらにできることはすべて自分のクレートから直接行えます。
このセクションはタスク指向です。完全な型シグネチャとフィールドのドキュメントは docs.rs の rustdoc を参照してください。
ライブラリを組み込むべきとき
次のうち一つ以上が必要な場合は、(bca を外部プロセスとして呼び出す代わりに)ライブラリを使用してください:
- インプロセス分析。 カスタムツール、IDE プラグイン、静的解析パイプラインで数千のファイルをスコアリングする際に、ファイルごとにサブプロセスを起動するコストを回避します。
- インメモリソース。 生成された、前処理済みの、あるいはストリーミングされたソースを、先にディスクへ書き出すことなくスコアリングします。インメモリソースの分析を参照してください。
- 選択的な走査。
FuncSpaceツリーを独自に走査し、関数ごとのメトリクスを任意のタイミングで抽出します。FuncSpace 結果の走査を参照してください。 - カスタム出力。
src/output/配下の JSON / YAML / TOML / CBOR シリアライザーを使わず、独自のレポート形式(CSV、SARIF、データベース行など)を出力します。
Markdown の品質レポートや CI のしきい値ゲートが欲しいだけであれば、bca CLI の方が手早く構築できます。
現在提供している内容
- クイックスタート — 文字列をパースし、
FuncSpaceを取得して、認知的複雑度を出力します。 - インメモリソースの分析 — ファイルではなくバッファからソースを与えます。
- 既存の tree-sitter Tree の再利用 — 呼び出し側で構築した
tree_sitter::Treeをメトリクスウォーカーに渡します。 - 一度のパースでメトリクスを何度も実行する — パース済みの
Astを保持し、同じツリーに対して複数のメトリクスサブセットやカスタム走査を実行します。 - AST を直接走査する — 構文要素のカウント、種類によるノードの検索、パースエラーの検出、メトリクス走査と並行したシンボルテーブルの構築を行います。
- メトリクスの選択 —
MetricsOptions::with_onlyで必要なメトリクスだけを計算します。依存するメトリクスが入力をどう引き込むかも説明します。 FuncSpace結果の走査 — 入れ子になった関数 / クラス / impl のスペースへ再帰します。- エラー処理 — 現在の
Result<FuncSpace, MetricsError>の意味と、それを有用な診断へ変換する方法です。 - 安定性とバージョニング —
2.x系を通じて信頼できるもの・できないものです。
API の安定性について
このライブラリは 2.x 系にあり、明文化された安定性契約のもとで提供されています。公開 API の形状はパッチおよびマイナーバンプの間で安定に保たれ、破壊的変更は次のメジャーバンプまで保留されます。このセクションのすべての例は現在公開中のクレートに対してコンパイルでき、2.x の間は修正なしでコンパイルできることが期待されます。
メトリクスの 値 は、文法のピンが移動したりメトリクス定義が修正されたりすると、マイナーバンプの間でも変動することがあります。この例外については STABILITY.md § What is stable in value を参照してください。各変動は、それを導入する changelog エントリで明示されます。