mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-06 22:00:40 +08:00
Merge pull request #620 from Codium-ai/tr/updates
Configuration updates
This commit is contained in:
@ -50,6 +50,9 @@ pr_commands = [
|
|||||||
Meaning that by default, for each PR the `describe`, `review`, and `improve` tools will be triggered automatically, and the `improve` tool will present the suggestions in a single comment.
|
Meaning that by default, for each PR the `describe`, `review`, and `improve` tools will be triggered automatically, and the `improve` tool will present the suggestions in a single comment.
|
||||||
You can of course overwrite these defaults by adding a `.pr_agent.toml` file to your repo. See [here](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#working-with-github-app).
|
You can of course overwrite these defaults by adding a `.pr_agent.toml` file to your repo. See [here](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#working-with-github-app).
|
||||||
|
|
||||||
|
### Jan 10, 2024
|
||||||
|
[LanceDB](https://lancedb.com/) is now supported as a locally hosted VectorDB for the `similar_issue` tool. See [here](./docs/SIMILAR_ISSUE.md) for more details.
|
||||||
|
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
<div style="text-align:left;">
|
<div style="text-align:left;">
|
||||||
|
@ -51,7 +51,6 @@ To edit [configurations](./../pr_agent/settings/configuration.toml#L66) related
|
|||||||
- `num_code_suggestions`: number of code suggestions provided by the 'improve' tool. Default is 4.
|
- `num_code_suggestions`: number of code suggestions provided by the 'improve' tool. Default is 4.
|
||||||
- `extra_instructions`: Optional extra instructions to the tool. For example: "focus on the changes in the file X. Ignore change in ...".
|
- `extra_instructions`: Optional extra instructions to the tool. For example: "focus on the changes in the file X. Ignore change in ...".
|
||||||
- `rank_suggestions`: if set to true, the tool will rank the suggestions, based on importance. Default is false.
|
- `rank_suggestions`: if set to true, the tool will rank the suggestions, based on importance. Default is false.
|
||||||
- `include_improved_code`: if set to true, the tool will include an improved code implementation in the suggestion. Default is true.
|
|
||||||
- `summarize`: if set to true, the tool will display the suggestions in a single comment. Default is false.
|
- `summarize`: if set to true, the tool will display the suggestions in a single comment. Default is false.
|
||||||
- `enable_help_text`: if set to true, the tool will display a help text in the comment. Default is true.
|
- `enable_help_text`: if set to true, the tool will display a help text in the comment. Default is true.
|
||||||
#### params for '/improve --extended' mode
|
#### params for '/improve --extended' mode
|
||||||
|
@ -42,14 +42,14 @@ To edit [configurations](./../pr_agent/settings/configuration.toml#L19) related
|
|||||||
- `require_score_review`: if set to true, the tool will add a section that scores the PR. Default is false.
|
- `require_score_review`: if set to true, the tool will add a section that scores the PR. Default is false.
|
||||||
- `require_tests_review`: if set to true, the tool will add a section that checks if the PR contains tests. Default is true.
|
- `require_tests_review`: if set to true, the tool will add a section that checks if the PR contains tests. Default is true.
|
||||||
- `require_security_review`: if set to true, the tool will add a section that checks if the PR contains security issues. Default is true.
|
- `require_security_review`: if set to true, the tool will add a section that checks if the PR contains security issues. Default is true.
|
||||||
- `require_estimate_effort_to_review`: if set to true, the tool will add a section that estimates thed effort needed to review the PR. Default is true.
|
- `require_estimate_effort_to_review`: if set to true, the tool will add a section that estimates the effort needed to review the PR. Default is true.
|
||||||
#### SOC2 ticket compliance 💎
|
#### SOC2 ticket compliance 💎
|
||||||
This sub-tool checks if the PR description properly contains a ticket to a project management system (e.g., Jira, Asana, Trello, etc.), as required by SOC2 compliance. If not, it will add a label to the PR: "Missing SOC2 ticket".
|
This sub-tool checks if the PR description properly contains a ticket to a project management system (e.g., Jira, Asana, Trello, etc.), as required by SOC2 compliance. If not, it will add a label to the PR: "Missing SOC2 ticket".
|
||||||
- `require_soc2_review`: If set to true, the SOC2 ticket checker sub-tool will be enabled. Default is false.
|
- `require_soc2_ticket`: If set to true, the SOC2 ticket checker sub-tool will be enabled. Default is false.
|
||||||
- `soc2_ticket_prompt`: The prompt for the SOC2 ticket review. Default is: `Does the PR description include a link to ticket in a project management system (e.g., Jira, Asana, Trello, etc.) ?`. Edit this field if your compliance requirements are different.
|
- `soc2_ticket_prompt`: The prompt for the SOC2 ticket review. Default is: `Does the PR description include a link to ticket in a project management system (e.g., Jira, Asana, Trello, etc.) ?`. Edit this field if your compliance requirements are different.
|
||||||
#### Adding PR labels
|
#### Adding PR labels
|
||||||
- `enable_review_labels_security`: if set to true, the tool will publish a 'possible security issue' label if it detects a security issue. Default is true.
|
- `enable_review_labels_security`: if set to true, the tool will publish a 'possible security issue' label if it detects a security issue. Default is true.
|
||||||
- `enable_review_labels_effort`: if set to true, the tool will publish a 'Review effort [1-5]: x' label. Default is false.
|
- `enable_review_labels_effort`: if set to true, the tool will publish a 'Review effort [1-5]: x' label. Default is true.
|
||||||
|
|
||||||
### Incremental Mode
|
### Incremental Mode
|
||||||
Incremental review only considers changes since the last PR-Agent review. This can be useful when working on the PR in an iterative manner, and you want to focus on the changes since the last review instead of reviewing the entire PR again.
|
Incremental review only considers changes since the last PR-Agent review. This can be useful when working on the PR in an iterative manner, and you want to focus on the changes since the last review instead of reviewing the entire PR again.
|
||||||
@ -103,7 +103,7 @@ The `review` tool provides a collection of possible feedbacks about a PR.
|
|||||||
It is recommended to review the [Configuration options](#configuration-options) section, and choose the relevant options for your use case.
|
It is recommended to review the [Configuration options](#configuration-options) section, and choose the relevant options for your use case.
|
||||||
|
|
||||||
Some of the feature that are disabled by default are quite useful, and should be considered for enabling. For example:
|
Some of the feature that are disabled by default are quite useful, and should be considered for enabling. For example:
|
||||||
`require_score_review`, `require_soc2_review`, `enable_review_labels_effort`, and more.
|
`require_score_review`, `require_soc2_ticket`, and more.
|
||||||
|
|
||||||
On the other hand, if you find one of the enabled features to be irrelevant for your use case, disable it. No default configuration can fit all use cases.
|
On the other hand, if you find one of the enabled features to be irrelevant for your use case, disable it. No default configuration can fit all use cases.
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ The `review` tool can auto-generate two specific types of labels for a PR:
|
|||||||
The `review` tool provides a collection of possible feedbacks about a PR.
|
The `review` tool provides a collection of possible feedbacks about a PR.
|
||||||
It is recommended to review the [possible options](https://github.com/Codium-ai/pr-agent/blob/main/docs/REVIEW.md#enabledisable-features), and choose the ones relevant for your use case.
|
It is recommended to review the [possible options](https://github.com/Codium-ai/pr-agent/blob/main/docs/REVIEW.md#enabledisable-features), and choose the ones relevant for your use case.
|
||||||
Some of the feature that are disabled by default are quite useful, and should be considered for enabling. For example:
|
Some of the feature that are disabled by default are quite useful, and should be considered for enabling. For example:
|
||||||
`require_score_review`, `require_soc2_review`, `enable_review_labels_effort`, and more.
|
`require_score_review`, `require_soc2_ticket`, and more.
|
||||||
"""
|
"""
|
||||||
output += "\n\n</details></td></tr>\n\n"
|
output += "\n\n</details></td></tr>\n\n"
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ persistent_comment=true
|
|||||||
extra_instructions = ""
|
extra_instructions = ""
|
||||||
# review labels
|
# review labels
|
||||||
enable_review_labels_security=true
|
enable_review_labels_security=true
|
||||||
enable_review_labels_effort=false
|
enable_review_labels_effort=true
|
||||||
# specific configurations for incremental review (/review -i)
|
# specific configurations for incremental review (/review -i)
|
||||||
require_all_thresholds_for_incremental_review=false
|
require_all_thresholds_for_incremental_review=false
|
||||||
minimal_commits_for_incremental_review=0
|
minimal_commits_for_incremental_review=0
|
||||||
@ -69,8 +69,7 @@ enable_help_text=true
|
|||||||
|
|
||||||
[pr_code_suggestions] # /improve #
|
[pr_code_suggestions] # /improve #
|
||||||
num_code_suggestions=4
|
num_code_suggestions=4
|
||||||
summarize = false
|
summarize = true
|
||||||
include_improved_code = true
|
|
||||||
extra_instructions = ""
|
extra_instructions = ""
|
||||||
rank_suggestions = false
|
rank_suggestions = false
|
||||||
enable_help_text=true
|
enable_help_text=true
|
||||||
|
@ -169,35 +169,19 @@ class PRCodeSuggestions:
|
|||||||
if new_code_snippet:
|
if new_code_snippet:
|
||||||
new_code_snippet = self.dedent_code(relevant_file, relevant_lines_start, new_code_snippet)
|
new_code_snippet = self.dedent_code(relevant_file, relevant_lines_start, new_code_snippet)
|
||||||
|
|
||||||
if get_settings().pr_code_suggestions.include_improved_code:
|
|
||||||
body = f"**Suggestion:** {content} [{label}]\n```suggestion\n" + new_code_snippet + "\n```"
|
body = f"**Suggestion:** {content} [{label}]\n```suggestion\n" + new_code_snippet + "\n```"
|
||||||
code_suggestions.append({'body': body, 'relevant_file': relevant_file,
|
code_suggestions.append({'body': body, 'relevant_file': relevant_file,
|
||||||
'relevant_lines_start': relevant_lines_start,
|
'relevant_lines_start': relevant_lines_start,
|
||||||
'relevant_lines_end': relevant_lines_end})
|
'relevant_lines_end': relevant_lines_end})
|
||||||
else:
|
|
||||||
if self.git_provider.is_supported("create_inline_comment"):
|
|
||||||
body = f"**Suggestion:** {content} [{label}]"
|
|
||||||
comment = self.git_provider.create_inline_comment(body, relevant_file, "",
|
|
||||||
absolute_position=relevant_lines_end)
|
|
||||||
if comment:
|
|
||||||
code_suggestions.append(comment)
|
|
||||||
else:
|
|
||||||
get_logger().error("Inline comments are not supported by the git provider")
|
|
||||||
except Exception:
|
except Exception:
|
||||||
if get_settings().config.verbosity_level >= 2:
|
if get_settings().config.verbosity_level >= 2:
|
||||||
get_logger().info(f"Could not parse suggestion: {d}")
|
get_logger().info(f"Could not parse suggestion: {d}")
|
||||||
|
|
||||||
if get_settings().pr_code_suggestions.include_improved_code:
|
|
||||||
is_successful = self.git_provider.publish_code_suggestions(code_suggestions)
|
is_successful = self.git_provider.publish_code_suggestions(code_suggestions)
|
||||||
else:
|
|
||||||
is_successful = self.git_provider.publish_inline_comments(code_suggestions)
|
|
||||||
if not is_successful:
|
if not is_successful:
|
||||||
get_logger().info("Failed to publish code suggestions, trying to publish each suggestion separately")
|
get_logger().info("Failed to publish code suggestions, trying to publish each suggestion separately")
|
||||||
for code_suggestion in code_suggestions:
|
for code_suggestion in code_suggestions:
|
||||||
if get_settings().pr_code_suggestions.include_improved_code:
|
|
||||||
self.git_provider.publish_code_suggestions([code_suggestion])
|
self.git_provider.publish_code_suggestions([code_suggestion])
|
||||||
else:
|
|
||||||
self.git_provider.publish_inline_comments([code_suggestion])
|
|
||||||
|
|
||||||
def dedent_code(self, relevant_file, relevant_lines_start, new_code_snippet):
|
def dedent_code(self, relevant_file, relevant_lines_start, new_code_snippet):
|
||||||
try: # dedent code snippet
|
try: # dedent code snippet
|
||||||
|
@ -5,7 +5,6 @@ from typing import List
|
|||||||
import openai
|
import openai
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import pinecone
|
import pinecone
|
||||||
import lancedb
|
|
||||||
from pinecone_datasets import Dataset, DatasetMetadata
|
from pinecone_datasets import Dataset, DatasetMetadata
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
@ -108,6 +107,7 @@ class PRSimilarIssue:
|
|||||||
get_logger().info('No new issues to update')
|
get_logger().info('No new issues to update')
|
||||||
|
|
||||||
elif get_settings().pr_similar_issue.vectordb == "lancedb":
|
elif get_settings().pr_similar_issue.vectordb == "lancedb":
|
||||||
|
import lancedb # import lancedb only if needed
|
||||||
self.db = lancedb.connect(get_settings().lancedb.uri)
|
self.db = lancedb.connect(get_settings().lancedb.uri)
|
||||||
self.table = None
|
self.table = None
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user