ライブラリとしての利用

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 の方が手早く構築できます。

現在提供している内容

API の安定性について

このライブラリは 2.x 系にあり、明文化された安定性契約のもとで提供されています。公開 API の形状はパッチおよびマイナーバンプの間で安定に保たれ、破壊的変更は次のメジャーバンプまで保留されます。このセクションのすべての例は現在公開中のクレートに対してコンパイルでき、2.x の間は修正なしでコンパイルできることが期待されます。

メトリクスの は、文法のピンが移動したりメトリクス定義が修正されたりすると、マイナーバンプの間でも変動することがあります。この例外については STABILITY.md § What is stable in value を参照してください。各変動は、それを導入する changelog エントリで明示されます。