commit | 821e70a84bd271ccc8613cc2b9d3b84e1d2c9305 | [log] [tgz] |
---|---|---|
author | Patrizio <patrizio.gelosi@amarulasolutions.com> | Mon Feb 12 16:38:19 2024 +0100 |
committer | Patrizio <patrizio.gelosi@amarulasolutions.com> | Tue Feb 13 08:43:40 2024 +0100 |
tree | 902c3b773f7b62b2bd7011255f8b7128e771741e | |
parent | 5c9791d589815b0a4024118f01d3883812ce109b [diff] |
Refactor: GerritClientDetail in GerritClientFacade Transitioned management of the GerritClientDetail class from being a component of PatchSetReviewer to being part of the GerritClientFacade Singleton. This allows PatchSet details to be loaded a single time and utilized in various code locations. Consequently, the instantiation and disposal of singletons are now consolidated within the EventListenerHandler class. Jira-Id: IT-103 Change-Id: I9118f0d64ca1cfd417b47019dc09645adb1e4cf5 Signed-off-by: Patrizio <patrizio.gelosi@amarulasolutions.com>
gerritEmailAddress
is in the form “gerritUserName@<any_email_domain>”) in the comments to further guide it in generating more targeted review comments.Build: Requires JDK 11 or higher, Maven 3.0 or higher.
mvn -U clean package
If the user needs to disable test just run
mvn -U -DskipTests=true clean package
Install: Upload the compiled jar file to the $gerrit_site/plugins
directory.
Configure: First, you need to create a ChatGPT user in Gerrit. Then, set up the basic parameters in your $gerrit_site/etc/gerrit.config
file under the section
[plugin "chatgpt-code-review-gerrit-plugin"]
:
gptToken
: OpenAI GPT token.
gerritAuthBaseUrl
: The URL of your Gerrit instance, similar to https://gerrit.local.team
.
NOTE: Do not append “/a” authentication sub-path to the Gerrit URL.
gerritUserName
: Gerrit username of ChatGPT user.
gerritPassword
: Gerrit password of ChatGPT user.
globalEnable
: Default value is false. The plugin will only review specified repositories. If set to true, the plugin will by default review all pull requests.
For enhanced security, consider storing sensitive information like gptToken and gerritPassword in a secure location or file. Detailed instructions on how to do this will be provided later in this document.
Verify: After restarting Gerrit, you can see the following information in Gerrit's logs:
INFO com.google.gerrit.server.plugins.PluginLoader : Loaded plugin chatgpt-code-review-gerrit-plugin, version 1.0.0
You can also check the status of the chatgpt-code-review-gerrit-plugin on Gerrit's plugin page as Enabled.
Examples of ChatGPT's code reviews and inline discussions are available at https://wiki.amarulasolutions.com/opensource/chatgpt-gerrit.html
You have the option to establish global settings, or independently configure specific projects. If you choose independent configuration, the corresponding project settings will override the global parameters.
To configure these parameters, you need to modify your Gerrit configuration file (gerrit.config
). The file format is as follows:
[plugin "chatgpt-code-review-gerrit-plugin"] # Required parameters gptToken = {gptToken} gerritAuthBaseUrl = {gerritAuthBaseUrl} ... # Optional parameters gptModel = {gptModel} gptSystemPrompt = {gptSystemPrompt} ...
It is highly recommended to store sensitive information such as gptToken
and gerritPassword
in the secure.config
file. Please edit the file at $gerrit_site/etc/secure.config
and include the following details:
[plugin "chatgpt-code-review-gerrit-plugin"] gptToken = {gptToken} gerritPassword = {gerritPassword}
If you wish to encrypt the information within the secure.config
file, you can refer to: https://gerrit.googlesource.com/plugins/secure-config
To add the following content, please edit the project.config
file in refs/meta/config
:
[plugin "chatgpt-code-review-gerrit-plugin"] # Required parameters gerritUserName = {gerritUserName} gerritAuthBaseUrl = {gerritAuthBaseUrl} ... # Optional parameters gptModel = {gptModel} gptSystemPrompt = {gptSystemPrompt} ...
Please ensure strict control over the access permissions of refs/meta/config
since sensitive information such as gptToken
and gerritPassword
is configured in the project.config
file within refs/meta/config
.
gptModel
: The default model is gpt-3.5-turbo. You can also configure it to gpt-3.5-turbo-16k, gpt-4 or gpt-4-32k.gptDomain
: The default ChatGPT domain is https://api.openai.com
.gptSystemPrompt
: You can modify the default system prompt (“Act as a PatchSet Reviewer”) to your preferred prompt.gptTemperature
: The default value is 1. What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.gptReviewPatchSet
: Set to true by default. When switched to false, it disables the automatic review of Patch Sets as they are created or updated.gptReviewCommitMessages
: The default value is false. When enabled by setting to true, this option also verifies if the commit message matches with the content of the review.gptFullFileReview
: Enabled by default. Activating this option sends both unchanged lines and changes to ChatGPT for review, offering additional context information. Deactivating it (set to false) results in only the changed lines being submitted for review.gptStreamOutput
: The default value is false. Whether the response is expected in stream output mode or not.maxReviewLines
: The default value is 1000. This sets a limit on the number of lines of code included in the review.maxReviewFileSize
: Set with a default value of 10000, this parameter establishes a cap on the file size that can be included in reviews.enabledUsers
: By default, every user is enabled to have their Patch Sets and comments reviewed. To limit review capabilities to specific users, list their usernames in this setting, separated by commas.disabledUsers
: Functions oppositely to enabledUsers.enabledGroups
: By default, all groups are permitted to have their Patch Sets and comments reviewed. To restrict review access to certain groups, specify their names in this setting, separating them with commas.disabledGroups
: Operates in reverse to enabledGroups
, excluding specified groups from reviews.enabledTopicFilter
: Specifies a list of keywords that trigger ChatGPT reviews based on the topic of the Patch Set. When this setting is active, only Patch Sets and their associated comments containing at least one of these keywords in the topic are reviewed.disabledTopicFilter
: Works in contrast to enabledTopicFilter, excluding Patch Sets and comments from review if their topics contain specified keywords.enabledFileExtensions
: This limits the reviewed files to the given types. Default file extensions are “.py, .java, .js, .ts, .html, .css, .cs, .cpp, .c, .h, .php, .rb, .swift, .kt, .r, .jl, .go, .scala, .pl, .pm, .rs, .dart, .lua, .sh, .vb, .bat”.enabledVoting
: Initially disabled (false). If set to true, allows ChatGPT to cast a vote on each reviewed Patch Set by assigning a score.votingMinScore
: The lowest possible score that can be given to a Patch Set (Default value: -1).votingMaxScore
: The highest possible score that can be given to a Patch Set (Default value: +1).globalEnable
: Set to false by default, meaning the plugin will review only designated repositories. If enabled, the plugin will automatically review all pull requests by default (not recommended in production environments).enabledProjects
: The default value is an empty string. If globalEnable is set to false, the plugin will only run in the repositories specified here. The value should be a comma-separated list of repository names, for example: " project1,project2,project3".isEnabled
: The default is false. If set to true, the plugin will review the Patch Set of this project./review
: when used in a comment directed at ChatGPT on any Change Set, triggers a review of the full Change Set./review_last
: when used in a comment directed at ChatGPT on any Change Set, triggers a review of the last Patch Set of the Change Set.Apache License 2.0