Automatically enable improve extended mode for large PRs

This commit is contained in:
zmeir
2024-01-03 14:21:38 +02:00
parent c31ce3de35
commit 0189e12fb1
3 changed files with 24 additions and 1 deletions

View File

@ -29,6 +29,10 @@ Under the section 'pr_code_suggestions', the [configuration file](./../pr_agent/
- `include_improved_code`: if set to true, the tool will include an improved code implementation in the suggestion. Default is true.
#### params for '/improve --extended' mode
- `auto_extended_mode`: enable extended mode automatically for large PRs. Default is true.
- `auto_extended_mode_min_files`: minimum number of files in the PR to automatically enable extended mode. Default is 1.
- `auto_extended_mode_min_additions`: minimum number of line additions in the PR to automatically enable extended mode. Default is 500.
- `auto_extended_mode_min_deletions`: minimum number of line deletions in the PR to automatically enable extended mode. Default is 0.
- `num_code_suggestions_per_chunk`: number of code suggestions provided by the 'improve' tool, per chunk. Default is 8.
- `rank_extended_suggestions`: if set to true, the tool will rank the suggestions, based on importance. Default is true.
- `max_number_of_calls`: maximum number of chunks. Default is 5.

View File

@ -71,6 +71,10 @@ include_improved_code = true
extra_instructions = ""
rank_suggestions = false
# params for '/improve --extended' mode
auto_extended_mode=true
auto_extended_mode_min_files=1
auto_extended_mode_min_additions=500
auto_extended_mode_min_deletions=0
num_code_suggestions_per_chunk=8
rank_extended_suggestions = true
max_number_of_calls = 5

View File

@ -26,7 +26,7 @@ class PRCodeSuggestions:
# extended mode
try:
self.is_extended = any(["extended" in arg for arg in args])
self.is_extended = self._get_is_extended(args or [])
except:
self.is_extended = False
if self.is_extended:
@ -206,6 +206,21 @@ class PRCodeSuggestions:
return new_code_snippet
def _get_is_extended(self, args: list[str]) -> bool:
"""Check if extended mode should be enabled by the `--extended` flag or automatically according to the PR"""
if any(["extended" in arg for arg in args]):
get_logger().info("Extended mode is enabled by the `--extended` flag")
return True
if (
get_settings().pr_code_suggestions.auto_extended_mode
and self.git_provider.pr.changed_files >= get_settings().pr_code_suggestions.auto_extended_mode_min_files
and self.git_provider.pr.additions >= get_settings().pr_code_suggestions.auto_extended_mode_min_additions
and self.git_provider.pr.deletions >= get_settings().pr_code_suggestions.auto_extended_mode_min_deletions
):
get_logger().info("Extended mode is enabled automatically based on the PR size")
return True
return False
async def _prepare_prediction_extended(self, model: str) -> dict:
get_logger().info('Getting PR diff...')
patches_diff_list = get_pr_multi_diffs(self.git_provider, self.token_handler, model,