Skip to content

Commit

Permalink
fix: fix issues for all format
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Jul 12, 2023
1 parent 140ab0a commit 83e3776
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 23 deletions.
Expand Up @@ -30,6 +30,7 @@ import java.time.Duration


class OpenAIConnector : CodeCopilot {
private val promptGenerator = PromptGenerator()
private var service: OpenAiService

private val timeout = Duration.ofSeconds(600)
Expand Down
Expand Up @@ -2,7 +2,6 @@ package cc.unitmesh.devti.connector.openai

import cc.unitmesh.devti.analysis.DtClass
import cc.unitmesh.devti.flow.model.SimpleProjectInfo
import com.intellij.openapi.util.NlsSafe
import java.io.InputStream

class PromptGenerator {
Expand Down Expand Up @@ -34,28 +33,13 @@ class PromptGenerator {
.replace("{storyDetail}", storyDetail)
}

fun codeComplete(methodCode: String, className: @NlsSafe String?): String {
val promptText: InputStream = getResource("copilot/code_complete")!!
val promptTextString = promptText.bufferedReader().use { it.readText() }
return promptTextString
.replace("{code}", methodCode)
.replace("{className}", className ?: "")
}

fun autoComment(methodCode: String): String {
val promptText: InputStream = getResource("copilot/code_comments")!!
val promptTextString = promptText.bufferedReader().use { it.readText() }
return promptTextString
.replace("{code}", methodCode)
}

fun codeReview(text: String): String {
val promptText: InputStream = getResource("copilot/code_review")!!
val promptTextString = promptText.bufferedReader().use { it.readText() }
return promptTextString
.replace("{code}", text)
}

fun findBug(text: String): String {
val promptText: InputStream = getResource("copilot/find_bug")!!
val promptTextString = promptText.bufferedReader().use { it.readText() }
Expand Down
2 changes: 2 additions & 0 deletions src/main/kotlin/cc/unitmesh/devti/flow/AutoDevFlow.kt
Expand Up @@ -144,8 +144,10 @@ class AutoDevFlow(

// todo: log in here
private fun executePrompt(promptText: String): String {
ui.add(promptText, true)
return runBlocking {
val prompt = connector.prompt(promptText)
ui.add(prompt, false)
return@runBlocking prompt
}
}
Expand Down
26 changes: 24 additions & 2 deletions src/main/kotlin/cc/unitmesh/devti/model/DtAnalysisModel.kt
Expand Up @@ -26,7 +26,7 @@ class DtClass(
* //}
* ```
*/
fun format(): String {
fun commentFormat(): String {
val output = StringBuilder()
output.append("// package: $packageName\n")
output.append("// class $name {\n")
Expand Down Expand Up @@ -70,9 +70,31 @@ class DtClass(
return output.toString()
}

fun format(): String {
val output = StringBuilder()
output.append("class $name ")

val constructor = methods.find { it.name == this.name }
if (constructor != null) {
output.append("constructor(")
output.append(constructor.parameters.joinToString(", ") { "${it.name}: ${it.type}" })
output.append(")\n")
}

if (methods.isNotEmpty()) {
output.append("- methods: ")
// filter out constructor
output.append(methods.filter { it.name != this.name }.joinToString(", ") { method ->
"${method.name}(${method.parameters.joinToString(", ") { parameter -> "${parameter.name}: ${parameter.type}" }}): ${method.returnType}"
})
}

return output.toString()
}

companion object {
fun formatPsi(psiClass: PsiClass): String {
return fromPsi(psiClass).format()
return fromPsi(psiClass).commentFormat()
}

fun fromJavaFile(file: PsiJavaFileImpl?): DtClass {
Expand Down
Expand Up @@ -5,6 +5,7 @@ import cc.unitmesh.devti.flow.AutoDevFlow
import cc.unitmesh.devti.flow.JavaCrudProcessor
import cc.unitmesh.devti.flow.kanban.impl.GitHubIssue
import cc.unitmesh.devti.connector.openai.OpenAIConnector
import cc.unitmesh.devti.gui.DevtiFlowToolWindowFactory
import cc.unitmesh.devti.gui.chat.ChatBotActionType
import cc.unitmesh.devti.gui.chat.ChatCodingComponent
import cc.unitmesh.devti.gui.chat.ChatCodingService
Expand All @@ -22,6 +23,7 @@ import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.progress.Task
import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.ToolWindowManager

class AutoDevRunProfileState(
val environment: ExecutionEnvironment,
Expand All @@ -37,6 +39,9 @@ class AutoDevRunProfileState(
}

override fun execute(executor: Executor?, runner: ProgramRunner<*>): ExecutionResult? {
val toolWindowManager = ToolWindowManager.getInstance(project).getToolWindow(DevtiFlowToolWindowFactory.id)
val contentManager = toolWindowManager?.contentManager

val javaAuto = JavaCrudProcessor(project)
val gitHubIssue = GitHubIssue(options.githubRepo(), githubToken)

Expand All @@ -47,8 +52,11 @@ class AutoDevRunProfileState(

val autoDevFlow = AutoDevFlow(gitHubIssue, openAIRunner, javaAuto, contentPanel)

log.warn(configuration.toString())
log.warn(options.toString())
val content = contentManager?.factory?.createContent(contentPanel, chatCodingService.getLabel(), false)

contentManager?.removeAllContents(true)
contentManager?.addContent(content!!)
toolWindowManager?.activate(null)

ProgressManager.getInstance().run(
object : Task.Backgroundable(project, "Loading retained test failure", true) {
Expand Down
5 changes: 2 additions & 3 deletions src/test/kotlin/cc/unitmesh/devti/model/DtClassTest.kt
@@ -1,6 +1,5 @@
package cc.unitmesh.devti.analysis

import cc.unitmesh.devti.analysis.DtClass.Companion.fromPsi
import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.PsiElementFactory
import com.intellij.testFramework.LightPlatformTestCase
Expand All @@ -26,7 +25,7 @@ class DtClassTest : LightPlatformTestCase() {

val dtClass = DtClass.fromPsi(psiClass)
assertEquals(
dtClass.format(), """// package: HelloController
dtClass.commentFormat(), """// package: HelloController
// class HelloController {
// blogService: BlogService
// + hello(): String
Expand Down Expand Up @@ -87,7 +86,7 @@ public void setAttendees(List<String> attendees) {

val dtClass = DtClass.fromPsi(psiClass)
assertEquals(
dtClass.format(), """// package: BookingDTO
dtClass.commentFormat(), """// package: BookingDTO
// class BookingDTO {
// roomId: String
// startTime: String
Expand Down

0 comments on commit 83e3776

Please sign in to comment.