Skip to content

Commit

Permalink
feat: init find bug line marker
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Apr 17, 2023
1 parent be242bd commit d74d9fb
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 31 deletions.

This file was deleted.

@@ -0,0 +1,22 @@
package cc.unitmesh.devti.language

import cc.unitmesh.devti.DevtiIcons
import cc.unitmesh.devti.runconfig.command.FindBugConfigurationProducer
import com.intellij.execution.lineMarker.ExecutorAction
import com.intellij.execution.lineMarker.RunLineMarkerContributor
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod

class FindBugLineMarkerContributor : RunLineMarkerContributor() {
override fun getInfo(element: PsiElement): Info? {
if (element !is PsiMethod) return null
val actions = ExecutorAction.getActions(0)
val state = FindBugConfigurationProducer().findConfig(listOf(element)) ?: return null
return Info(
DevtiIcons.STORY,
{ state.configurationName },
*actions
)
}

}
@@ -0,0 +1,48 @@
package cc.unitmesh.devti.runconfig.command

import cc.unitmesh.devti.runconfig.DtRunConfiguration
import cc.unitmesh.devti.runconfig.config.FindBugConfigure
import com.intellij.execution.actions.ConfigurationContext
import com.intellij.openapi.util.Ref
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod

class FindBugConfigurationProducer : BaseLazyRunConfigurationProducer<FindBugConfigure>() {
init {
registerConfigProvider { elements -> createConfigFor(elements) }
}

private fun createConfigFor(
elements: List<PsiElement>
): FindBugConfigure? {
if (elements.isEmpty()) return null
val methods = elements.filterIsInstance<PsiMethod>()
if (methods.isEmpty()) return null

val method = methods.first()

return FindBugConfigure(method.name)
}

override fun isConfigurationFromContext(configuration: DtRunConfiguration, context: ConfigurationContext): Boolean {
val config = findConfig(context.location?.psiElement?.let { listOf(it) } ?: return false) ?: return false
configuration.name = config.configurationName

return true
}

override fun setupConfigurationFromContext(
configuration: DtRunConfiguration,
context: ConfigurationContext,
sourceElement: Ref<PsiElement>
): Boolean {
val config = findConfig(context.location?.psiElement?.let { listOf(it) } ?: return false) ?: return false
configuration.name = config.configurationName

return true
}

private fun registerConfigProvider(provider: (List<PsiElement>) -> FindBugConfigure?) {
runConfigProviders.add(provider)
}
}
@@ -0,0 +1,13 @@
package cc.unitmesh.devti.runconfig.config

import cc.unitmesh.devti.runconfig.command.BaseConfig

class FindBugConfigure(
private val methodName: String,

Check warning on line 6 in src/main/kotlin/cc/unitmesh/devti/runconfig/config/FindBugConfigure.kt

View workflow job for this annotation

GitHub Actions / Build

Constructor parameter is never used as a property

Constructor parameter is never used as a property
) : BaseConfig() {
override var configurationName = "Find Bug"

init {
configurationName += " $methodName"
}
}
6 changes: 3 additions & 3 deletions src/main/resources/META-INF/plugin.xml
Expand Up @@ -10,11 +10,11 @@
<resource-bundle>messages.DevtiBundle</resource-bundle>

<extensions defaultExtensionNs="com.intellij">
<!-- show find bug -->
<runLineMarkerContributor language="JAVA"
implementationClass="cc.unitmesh.devti.language.DisplayStoryLineMarkerContributor"/>
<runConfigurationProducer
implementation="cc.unitmesh.devti.runconfig.command.AutoCRUDConfigurationProducer"/>
implementationClass="cc.unitmesh.devti.language.FindBugLineMarkerContributor"/>

<!-- analysis story, and -->
<runLineMarkerContributor language="JAVA"
implementationClass="cc.unitmesh.devti.language.AutoCRUDLineMarkerContributor"/>
<runConfigurationProducer
Expand Down

0 comments on commit d74d9fb

Please sign in to comment.