diff --git a/docs/IMPROVE.md b/docs/IMPROVE.md index f60cec53..1501ea1d 100644 --- a/docs/IMPROVE.md +++ b/docs/IMPROVE.md @@ -33,6 +33,14 @@ Under the section 'pr_code_suggestions', the [configuration file](./../pr_agent/ - `max_number_of_calls`: maximum number of chunks. Default is 5. - `final_clip_factor`: factor to remove suggestions with low confidence. Default is 0.9. +#### summarize mode +- `summarize`: if set to true, the tool will summarize the PR code changes. Default is false. +In this mode, instead of presenting commitable suggestions, the different suggestions will be combined into a single compact instruction, with a significant smaller PR footprint. +For example: +`/improve --pr_code_suggestions.summarize=true` + + + #### A note on code suggestions quality diff --git a/pics/improved_summerize_closed.png b/pics/improved_summerize_closed.png new file mode 100644 index 00000000..f33d87d3 Binary files /dev/null and b/pics/improved_summerize_closed.png differ diff --git a/pics/improved_summerize_open.png b/pics/improved_summerize_open.png new file mode 100644 index 00000000..a2bd35c2 Binary files /dev/null and b/pics/improved_summerize_open.png differ diff --git a/pr_agent/git_providers/bitbucket_provider.py b/pr_agent/git_providers/bitbucket_provider.py index e2431645..d13a708c 100644 --- a/pr_agent/git_providers/bitbucket_provider.py +++ b/pr_agent/git_providers/bitbucket_provider.py @@ -228,6 +228,10 @@ class BitbucketProvider(GitProvider): ) return response + def get_line_link(self, relevant_file: str, relevant_line_start: int, relevant_line_end: int = None) -> str: + link = f"{self.pr_url}/#L{relevant_file}T{relevant_line_start}" + return link + def generate_link_to_relevant_line_number(self, suggestion) -> str: try: relevant_file = suggestion['relevant file'].strip('`').strip("'") diff --git a/pr_agent/git_providers/github_provider.py b/pr_agent/git_providers/github_provider.py index ea2476bc..1fb85164 100644 --- a/pr_agent/git_providers/github_provider.py +++ b/pr_agent/git_providers/github_provider.py @@ -501,7 +501,6 @@ class GithubProvider(GitProvider): return "" - def get_line_link(self, relevant_file: str, relevant_line_start: int, relevant_line_end: int = None) -> str: sha_file = hashlib.sha256(relevant_file.encode('utf-8')).hexdigest() if relevant_line_end: diff --git a/pr_agent/tools/pr_code_suggestions.py b/pr_agent/tools/pr_code_suggestions.py index 7027fa2b..a65659d3 100644 --- a/pr_agent/tools/pr_code_suggestions.py +++ b/pr_agent/tools/pr_code_suggestions.py @@ -255,9 +255,9 @@ class PRCodeSuggestions: s['relevant lines end']) data_markdown += f"\n💡 Suggestion:\n\n**{s['suggestion content']}**\n\n" if code_snippet_link: - data_markdown += f" File: [{s['relevant file']} ({s['relevant lines start']}-{s['relevant lines end']})]({code_snippet_link})\n" + data_markdown += f" File: [{s['relevant file']} ({s['relevant lines start']}-{s['relevant lines end']})]({code_snippet_link})\n\n" else: - data_markdown += f"File: {s['relevant file']} ({s['relevant lines start']}-{s['relevant lines end']})\n" + data_markdown += f"File: {s['relevant file']} ({s['relevant lines start']}-{s['relevant lines end']})\n\n" if self.git_provider.is_supported("gfm_markdown"): data_markdown += "
Example code:\n\n" data_markdown += f"___\n\n"