scripts/code_review_tool_runner.py (51 lines of code) (raw):
# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
import argparse
import sys
from bugbug import generative_model_tool
from bugbug.code_search.function_search import function_search_classes
from bugbug.tools import code_review
from bugbug.vectordb import QdrantVectorDB
def run(args) -> None:
llm = generative_model_tool.create_llm_from_args(args)
function_search = (
function_search_classes[args.function_search_type]()
if args.function_search_type is not None
else None
)
vector_db = QdrantVectorDB("diff_comments")
review_comments_db = code_review.ReviewCommentsDB(vector_db)
code_review_tool = code_review.CodeReviewTool(
[llm],
llm,
function_search=function_search,
review_comments_db=review_comments_db,
show_patch_example=False,
)
review_data = code_review.review_data_classes[args.review_platform]()
revision = review_data.get_review_request_by_id(args.review_request_id)
patch = review_data.get_patch_by_id(revision.patch_id)
print(patch)
print(code_review_tool.run(patch))
input()
def parse_args(args):
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
parser.add_argument(
"--review_platform",
help="Review platform",
choices=list(code_review.review_data_classes.keys()),
)
parser.add_argument(
"--review_request_id",
help="Review request ID",
)
generative_model_tool.create_llm_to_args(parser)
parser.add_argument(
"--function_search_type",
help="Function search tool",
choices=list(function_search_classes.keys()),
)
return parser.parse_args(args)
if __name__ == "__main__":
args = parse_args(sys.argv[1:])
run(args)