RepoAudit:大規模リポジトリ向け、LLMを活用した自律型コード監査エージェント
GitHubで公開されたRepoAuditは、大規模リポジトリにおけるバグ検出を自動化する革新的なツールです。 LLM (大規模言語モデル) を活用し、手動のコード監査プロセスを模倣することで、C/C++、Java、Python、Goなど、多様なプログラミング言語における様々なバグ (Null Pointer Dereference、Memory Leak、Use After Freeなど) を検出します。既存のコード監査ツールと比較して、RepoAuditは以下の点で優れています。
- コンパイル不要の分析: コンパイルプロセスを必要とせず、迅速な分析を可能にします。
- 多言語対応: 様々なプログラミング言語に対応し、幅広いプロジェクトで使用できます。
- 多様なバグ検出: 複数の種類のバグを検出し、コードの信頼性を向上させます。
- カスタマイズ可能: 新しいバグの種類やプログラミング言語への対応が容易です。
RepoAudit のエージェント構成:詳細
RepoAuditは、複数のエージェントから構成されるフレームワークです。 現在、以下の2つのエージェントインスタンスが提供されています。
- MetaScanAgent (metascan.py): tree-sitterを利用した解析に基づき、プログラムの基本的な構文特性を取得。
- DFBScanAgent (dfbscan.py): データフロー解析を実行し、Null Pointer DereferenceやMemory Leakのようなデータフローのバグを検出。
今後は、さらに多くのエージェントを実装し、オープンソースとして公開予定です。 DFBScanAgentなどを活用することで、オープンソースコミュニティで多くの発見済みのバグを修正しています。詳細なバグリストは[こちら](website URL)を参照ください。
RepoAudit をインストール:簡単なステップ
RepoAuditのインストールは簡単です。以下の手順に従ってください。
-
conda環境の作成と有効化: Python 3.9.18 を使用した conda 環境を作成し、アクティブ化します。
-
必要な依存関係のインストール: RepoAudit ディレクトリに移動し、必要な依存関係をインストールします。
-
Tree-sitter ライブラリとランゲージバインディングのインストール確認:
-
OpenAI API キーの設定:
Claude3.5を使用する場合は、Amazon Bedrockでホストされているモデルを使用します。 環境設定が必要な場合があります。
クイックスタート:すぐに使い始める
RepoAuditをすぐに使い始めるために、benchmarkディレクトリにベンチマークプログラムが用意されています。 サブモジュールが含まれているため、以下のコマンドで初期化が必要となる場合があります。
src/run_repoaudit.sh
スクリプトを提供し、benchmark/Java/toy/NPD
ディレクトリ内のファイルをスキャンします。 以下のコマンドを実行ください。
スキャンが完了したら、生成されたJSONファイルとログファイルを確認できます。
並列監査サポート:より高速な分析
大規模なリポジトリでは、シーケンシャルな分析プロセスに時間がかかる場合があります。 分析を高速化するために、並列監査を選択できます。 特に、--max-neural-workers
オプションに大きな値を設定できます。 デフォルトでは、このオプションは並列監査用に6に設定されています。 また、構文解析に基づく分析は、デフォルトで並列モードで実行されます。 ワーカーのデフォルト最大数は10です。大規模リポジトリのコード品質改善に貢献します。
利用可能なリソース:ウェブサイト、論文、ドキュメント
現在、dfbscanの実装をオープンソース化しています。 今後、より多くの技術レポート/研究論文を公開し、RepoAudit の他のエージェントもオープンソース化する予定です。 詳細については、ウェブサイト[RepoAudit: Auditing Code As Human](website URL)を参照してください。
RepoAudit のツールの使用方法、プロジェクトアーキテクチャ、拡張機能について、次のドキュメントを参照ください。
- ユーザーガイド: インストール、構成、RepoAudit の使用に関する詳細な手順 (CLI およびWebUI の使用法を含む)。
- ツールアーキテクチャ: 構文解析ベースのアナライザー/ツール、LLM駆動ツール、エージェントのメモリ設計など、RepoAudit のマルチエージェントフレームワークの詳細な説明。
- 拡張: 新しい種類のバグに対してRepoAudit をカスタマイズし、より多くのプログラミング言語をサポートするためのガイドライン。
ライセンス
このプロジェクトは、GNU General Public License v2.0 (GPLv2) の下でライセンスされています。 このライセンスの条項に従い、派生物も同じライセンスで配布されることを条件に、ソフトウェアを自由に使用、変更、および配布できます。
詳細については、LICENSE ファイルを参照するか、公式ライセンスページhttps://www.gnu.org/licenses/old-licenses/gpl-2.0.htmlをご覧ください。