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

[jb] add inspections & quickfixes on .gitpod.yml vmoptions config #11089

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat(jb): use ReplaceVMOptionsQuickFix instead
  • Loading branch information
yaohui-wyh committed Aug 12, 2022
commit 12db58e6b8ddd6f0ec31ece6b30cec996d14a8dc
Original file line number Diff line number Diff line change
@@ -11,7 +11,6 @@ import com.intellij.openapi.util.BuildNumber
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.PsiFile
import io.gitpod.jetbrains.remote.quickfixes.AddVMOptionsQuickFix
import io.gitpod.jetbrains.remote.quickfixes.ApplyVMOptionsQuickFix
import io.gitpod.jetbrains.remote.quickfixes.ReplaceVMOptionsQuickFix
import io.gitpod.jetbrains.remote.utils.GitpodConfig.YamlKey
import io.gitpod.jetbrains.remote.utils.GitpodConfig.defaultXmxMiB
@@ -33,32 +32,19 @@ class GitpodConfigInspection : LocalInspectionTool() {
val productName = getJetBrainsProductName(productCode) ?: return
val keyValue = YAMLUtil.getQualifiedKeyInFile(file, YamlKey.jetbrains, productName, YamlKey.vmOptions)
if (keyValue == null) {
holder.registerProblem(
file,
"IDE's max heap size (-Xmx) is ${runtimeXmxMiB}m, but not configured in $gitpodYamlFile",
AddVMOptionsQuickFix(productName, runtimeXmxMiB)
)
val description = "IDE's max heap size (-Xmx) is ${runtimeXmxMiB}m, but not configured in $gitpodYamlFile"
val quickFix = AddVMOptionsQuickFix(productName, runtimeXmxMiB)
holder.registerProblem(file, description, quickFix)
return
}
val configuredXmxMiB = getUserConfiguredXmxValue(keyValue)
val quickFix = ReplaceVMOptionsQuickFix(runtimeXmxMiB)
if (configuredXmxMiB == null && runtimeXmxMiB != defaultXmxMiB) {
val description = "IDE's max heap size (-Xmx) is ${runtimeXmxMiB}m, but not configured in $gitpodYamlFile"
val fix = if (VMOptions.canWriteOptions()) {
ApplyVMOptionsQuickFix("Apply default -Xmx${defaultXmxMiB}m", defaultXmxMiB)
} else {
ReplaceVMOptionsQuickFix(runtimeXmxMiB)
}
holder.registerProblem(file, description, fix)
return
}
if (configuredXmxMiB != null && configuredXmxMiB != runtimeXmxMiB) {
holder.registerProblem(keyValue, description, quickFix)
} else if (configuredXmxMiB != null && runtimeXmxMiB != configuredXmxMiB) {
val description = "IDE's max heap size (-Xmx) is ${runtimeXmxMiB}m, but -Xmx${configuredXmxMiB}m configured in $gitpodYamlFile"
val fix = if (VMOptions.canWriteOptions()) {
ApplyVMOptionsQuickFix("Apply -Xmx${configuredXmxMiB}m configured in $gitpodYamlFile", runtimeXmxMiB)
} else {
ReplaceVMOptionsQuickFix(runtimeXmxMiB)
}
holder.registerProblem(file, description, fix)
holder.registerProblem(keyValue, description, quickFix)
}
}
}
Original file line number Diff line number Diff line change
@@ -16,6 +16,8 @@ class ApplyVMOptionsQuickFix(private val quickFixName: String, private val xmxVa
override fun getFamilyName() = name

override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
VMOptions.setOption(VMOptions.MemoryKind.HEAP, xmxValueMiB.toInt())
if (VMOptions.canWriteOptions()) {
VMOptions.setOption(VMOptions.MemoryKind.HEAP, xmxValueMiB.toInt())
}
}
}
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ import org.jetbrains.yaml.psi.YAMLKeyValue

class ReplaceVMOptionsQuickFix(private val xmxValueMiB: Long) : LocalQuickFix {

override fun getName() = "Set Xmx to $xmxValueMiB MiB"
override fun getName() = "Set Xmx to ${xmxValueMiB}m"

override fun getFamilyName() = name