Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add commit message generation feature #2127

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

nirzaf
Copy link

@nirzaf nirzaf commented Aug 27, 2024

Fixes #2109

Add automatic generation of commit messages, PR titles, and descriptions in JetBrains extension.

  • New Classes and Methods

    • Add CommitMessageParams and CommitMessageResult data classes in src/main/java/com/sourcegraph/cody/agent/protocol/.
    • Add CodyAgentClient class with generateCommitMessage method in src/main/java/com/sourcegraph/cody/agent/.
    • Add CodyAgentService class with generateCommitMessage method in src/main/java/com/sourcegraph/cody/agent/.
    • Add GenerateCommitMessageAction class in src/main/java/com/sourcegraph/cody/actions/.
  • Plugin Configuration

    • Update src/main/resources/META-INF/plugin.xml to include the new action GenerateCommitMessageAction.
  • Settings and UI

    • Add commitMessageTemplate property in CodyApplicationSettings in src/main/kotlin/com/sourcegraph/cody/config/.
    • Update CodyConfigurable in src/main/kotlin/com/sourcegraph/cody/config/ui/ to include a UI element for the commit message template.
  • Tests

    • Add tests for CodyAgentClient, CodyAgentService, and GenerateCommitMessageAction in src/test/kotlin/com/sourcegraph/cody/agent/ and src/test/kotlin/com/sourcegraph/cody/actions/.

Fixes sourcegraph#2109

Add automatic generation of commit messages, PR titles, and descriptions in JetBrains extension.

* **New Classes and Methods**
  - Add `CommitMessageParams` and `CommitMessageResult` data classes in `src/main/java/com/sourcegraph/cody/agent/protocol/`.
  - Add `CodyAgentClient` class with `generateCommitMessage` method in `src/main/java/com/sourcegraph/cody/agent/`.
  - Add `CodyAgentService` class with `generateCommitMessage` method in `src/main/java/com/sourcegraph/cody/agent/`.
  - Add `GenerateCommitMessageAction` class in `src/main/java/com/sourcegraph/cody/actions/`.

* **Plugin Configuration**
  - Update `src/main/resources/META-INF/plugin.xml` to include the new action `GenerateCommitMessageAction`.

* **Settings and UI**
  - Add `commitMessageTemplate` property in `CodyApplicationSettings` in `src/main/kotlin/com/sourcegraph/cody/config/`.
  - Update `CodyConfigurable` in `src/main/kotlin/com/sourcegraph/cody/config/ui/` to include a UI element for the commit message template.

* **Tests**
  - Add tests for `CodyAgentClient`, `CodyAgentService`, and `GenerateCommitMessageAction` in `src/test/kotlin/com/sourcegraph/cody/agent/` and `src/test/kotlin/com/sourcegraph/cody/actions/`.
@mkondratek
Copy link
Contributor

Hello @nirzaf 👋 thank you for your interest in the contribution

I looked into your changes and I checked out your branch. The first thing I noticed is that when I run ./gradlew check I see some errors at compilation.

> Configure project :
Cached /Users/mkondratek/IdeaProjects/jetbrains/build/sourcegraph/agent
Cached /Users/mkondratek/.sourcegraph/caches/jetbrains/e043321bc361256bdbac98e85a92f651996daaa8.zip
Cached /Users/mkondratek/.sourcegraph/caches/jetbrains/cody
Cached /Users/mkondratek/IdeaProjects/jetbrains/src/main/resources/dist
> Task :checkKotlinGradlePluginConfigurationErrors SKIPPED
> Task :copyProtocol UP-TO-DATE
> Task :initializeIntelliJPlugin SKIPPED
> Task :patchPluginXml UP-TO-DATE
> Task :verifyPluginConfiguration
> Task :buildCodeSearch UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :buildCody UP-TO-DATE
> Task :processTestResources NO-SOURCE
> Task :processIntegrationTestResources UP-TO-DATE
> Task :spotlessInternalRegisterDependencies UP-TO-DATE
> Task :spotlessJava UP-TO-DATE
> Task :spotlessJavaCheck UP-TO-DATE
> Task :spotlessKotlin
> Task :spotlessKotlinCheck FAILED
> Task :compileKotlin FAILED
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/java/com/sourcegraph/cody/actions/GenerateCommitMessageAction.kt:12:32 Unresolved reference 'CommonDataKeys'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/java/com/sourcegraph/cody/actions/GenerateCommitMessageAction.kt:13:31 Unresolved reference 'document'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/java/com/sourcegraph/cody/actions/GenerateCommitMessageAction.kt:14:20 Unresolved reference 'FileDocumentManager'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgent.kt:105:38 Too many arguments for 'constructor(): CodyAgentClient'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgent.kt:105:47 Too many arguments for 'constructor(): CodyAgentClient'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/config/ui/CodyConfigurable.kt:111:16 Unresolved reference 'bindText'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/config/ui/CodyConfigurable.kt:111:40 Unresolved reference 'commitMessageTemplate'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/config/ui/CodyConfigurable.kt:111:62 Cannot infer type for this parameter. Please specify it explicitly.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/config/ui/CodyConfigurable.kt:134:19 Unresolved reference 'commitMessageTemplate'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/config/ui/CodyConfigurable.kt:168:67 Unresolved reference 'commitMessageTemplate'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:90:22 Unresolved reference 'withAgent'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:90:43 Cannot infer type for this parameter. Please specify it explicitly.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:92:17 Unresolved reference 'server'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:97:27 Unresolved reference 'codeActions'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:97:49 Unresolved reference 'title'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:97:77 Unresolved reference 'kind'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:103:26 Unresolved reference 'server'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:103:91 Unresolved reference 'id'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:104:48 Unresolved reference 'id'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodeActionQuickFix.kt:104:54 Argument type mismatch: actual type is 'kotlin.text.MatchGroup?', but 'com.sourcegraph.cody.agent.protocol_generated.EditTask' was expected.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodyFixHighlightPass.kt:101:22 Unresolved reference 'withAgentRestartIfNeeded'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodyFixHighlightPass.kt:101:63 Cannot infer type for this parameter. Please specify it explicitly.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodyFixHighlightPass.kt:103:15 Unresolved reference 'server'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodyFixHighlightPass.kt:119:21 Unresolved reference 'server'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodyFixHighlightPass.kt:124:31 Unresolved reference 'codeActions'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodyFixHighlightPass.kt:125:53 Unresolved reference 'title'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/inspections/CodyFixHighlightPass.kt:125:70 Unresolved reference 'kind'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:317:24 Unresolved reference 'withAgent'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:317:43 Unresolved reference 'webviewReceiveMessageStringEncoded'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:318:12 Unresolved reference 'server'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:355:24 Unresolved reference 'withAgent'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:355:43 Unresolved reference 'commandExecute'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:356:12 Unresolved reference 'server'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:363:22 Unresolved reference 'withAgent'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:363:41 Unresolved reference 'webviewDidDisposeNative'.
e: file:///Users/mkondratek/IdeaProjects/jetbrains/src/main/kotlin/com/sourcegraph/cody/ui/CodyToolWindowFactory.kt:364:10 Unresolved reference 'server'.
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':spotlessKotlinCheck'.
> The following files had format violations:
      src/main/java/com/sourcegraph/cody/actions/GenerateCommitMessageAction.kt
          @@ -7,34 +7,33 @@
           import·com.sourcegraph.cody.agent.protocol.CommitMessageParams
           
           class·GenerateCommitMessageAction·:·AnAction()·{
          -····override·fun·actionPerformed(e:·AnActionEvent)·{
          -········val·project·=·e.project·?:·return
          -········val·editor·=·e.getData(CommonDataKeys.EDITOR)·?:·return
          -········val·document·=·editor.document
          -········val·file·=·FileDocumentManager.getInstance().getFile(document)·?:·return
          +··override·fun·actionPerformed(e:·AnActionEvent)·{
          +····val·project·=·e.project·?:·return
          +····val·editor·=·e.getData(CommonDataKeys.EDITOR)·?:·return
          +····val·document·=·editor.document
          +····val·file·=·FileDocumentManager.getInstance().getFile(document)·?:·return
           
          -········val·filePath·=·file.path
          -········val·diff·=·getDiff(filePath)·//·Implement·this·method·to·get·the·diff·of·the·file
          -········val·template·=·getTemplate()·//·Implement·this·method·to·get·the·commit·message·template
          +····val·filePath·=·file.path
          +····val·diff·=·getDiff(filePath)·//·Implement·this·method·to·get·the·diff·of·the·file
          +····val·template·=·getTemplate()·//·Implement·this·method·to·get·the·commit·message·template
           
          -········val·params·=·CommitMessageParams(filePath,·diff,·template)
          -········val·result·=·CodyAgentService().generateCommitMessage(params)
          +····val·params·=·CommitMessageParams(filePath,·diff,·template)
          +····val·result·=·CodyAgentService().generateCommitMessage(params)
           
          -········Messages.showMessageDialog(
          -············project,
          -············"Commit·Message:·${result.commitMessage}\n\nPR·Title:·${result.prTitle}\n\nPR·Description:·${result.prDescription}",
          -············"Generated·Commit·Message",
          -············Messages.getInformationIcon()
          -········)
          -····}
          +····Messages.showMessageDialog(
          +········project,
          +········"Commit·Message:·${result.commitMessage}\n\nPR·Title:·${result.prTitle}\n\nPR·Description:·${result.prDescription}",
          +········"Generated·Commit·Message",
          +········Messages.getInformationIcon())
          +··}
           
          -····private·fun·getDiff(filePath:·String):·String·{
          -········//·Implement·the·logic·to·generate·the·diff·for·the·given·file·path
          -········return·""
          -····}
          +··private·fun·getDiff(filePath:·String):·String·{
          +····//·Implement·the·logic·to·generate·the·diff·for·the·given·file·path
          +····return·""
          +··}
      ... (10 more lines that didn't fit)
  Violations also present in:
      src/main/java/com/sourcegraph/cody/agent/CodyAgentClient.kt
      src/main/java/com/sourcegraph/cody/agent/CodyAgentService.kt
      src/main/java/com/sourcegraph/cody/agent/protocol/CommitMessageParams.kt
      src/main/java/com/sourcegraph/cody/agent/protocol/CommitMessageResult.kt
      src/test/kotlin/com/sourcegraph/cody/actions/GenerateCommitMessageActionTest.kt
      src/test/kotlin/com/sourcegraph/cody/agent/CodyAgentClientTest.kt
      src/test/kotlin/com/sourcegraph/cody/agent/CodyAgentServiceTest.kt
  Run './gradlew :spotlessApply' to fix these violations.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================
2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':compileKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
   > Compilation error. See log for more details
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.8/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD FAILED in 1s
10 actionable tasks: 4 executed, 6 up-to-date

Can you please resolve these problems? 🙏


Also we are focused on preparation to the next important release right now. Hopefully, we should be able to put more resources into this one next week.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

PRD: Automatic Generation of Commit Messages and PR Descriptions/Titles for JetBrains Extension
2 participants