Skip to content

Commit d242a1a

Browse files
Add hint for disabled fuzzing control #1411 (#1429)
* Add hint for disabled fuzzing control #1411 * Add hint for disabled fuzzing control #1411 After-review improvement: replace potentially long file path with link, implement editing for settings.properties
1 parent 46cfad6 commit d242a1a

File tree

3 files changed

+52
-4
lines changed

3 files changed

+52
-4
lines changed

utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.utbot.framework
22

33
import com.jetbrains.rd.util.LogLevel
4+
import java.io.File
45
import mu.KotlinLogging
56
import org.utbot.common.AbstractSettings
67
import java.lang.reflect.Executable
@@ -9,12 +10,12 @@ private val logger = KotlinLogging.logger {}
910
/**
1011
* Path to the utbot home folder.
1112
*/
12-
internal val utbotHomePath = "${System.getProperty("user.home")}/.utbot"
13+
internal val utbotHomePath = "${System.getProperty("user.home")}${File.separatorChar}.utbot"
1314

1415
/**
1516
* Default path for properties file
1617
*/
17-
private val defaultSettingsPath = "$utbotHomePath/settings.properties"
18+
private val defaultSettingsPath = "$utbotHomePath${File.separatorChar}settings.properties"
1819
private const val defaultKeyForSettingsPath = "utbot.settings.path"
1920

2021
/**
@@ -26,6 +27,9 @@ object UtSettings : AbstractSettings(
2627
logger, defaultKeyForSettingsPath, defaultSettingsPath
2728
) {
2829

30+
@JvmStatic
31+
fun getPath(): String = System.getProperty(defaultKeyForSettingsPath)?: defaultSettingsPath
32+
2933
/**
3034
* Setting to disable coroutines debug explicitly.
3135
*

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt

+15-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.intellij.openapi.project.Project
55
import com.intellij.openapi.ui.ComboBox
66
import com.intellij.openapi.ui.DialogPanel
77
import com.intellij.ui.ContextHelpLabel
8+
import com.intellij.ui.components.ActionLink
89
import com.intellij.ui.components.JBLabel
910
import com.intellij.ui.layout.CCFlags
1011
import com.intellij.ui.layout.LayoutBuilder
@@ -20,6 +21,7 @@ import com.intellij.util.ui.components.BorderLayoutPanel
2021
import javax.swing.DefaultComboBoxModel
2122
import javax.swing.JCheckBox
2223
import javax.swing.JPanel
24+
import javax.swing.JSlider
2325
import kotlin.reflect.KClass
2426
import org.utbot.framework.UtSettings
2527
import org.utbot.framework.codegen.domain.ForceStaticMocking
@@ -29,9 +31,9 @@ import org.utbot.framework.plugin.api.CodeGenerationSettingItem
2931
import org.utbot.framework.plugin.api.CodegenLanguage
3032
import org.utbot.framework.plugin.api.JavaDocCommentStyle
3133
import org.utbot.framework.plugin.api.TreatOverflowAsError
32-
import org.utbot.intellij.plugin.ui.components.CodeGenerationSettingItemRenderer
33-
import javax.swing.JSlider
3434
import org.utbot.framework.plugin.api.isSummarizationCompatible
35+
import org.utbot.intellij.plugin.ui.components.CodeGenerationSettingItemRenderer
36+
import org.utbot.intellij.plugin.util.showSettingsEditor
3537

3638
class SettingsWindow(val project: Project) {
3739
private val settings = project.service<Settings>()
@@ -209,6 +211,17 @@ class SettingsWindow(val project: Project) {
209211
addToRight(symLabel)
210212
}().constraints(CCFlags.growX)
211213
}
214+
if (!UtSettings.useFuzzing) {
215+
row("") {
216+
cell {
217+
component(comment("Fuzzing is disabled in configuration file.").component)
218+
component(ActionLink("Edit configuration") {
219+
UIUtil.getWindow(fuzzLabel)?.dispose()
220+
showSettingsEditor(project, "useFuzzing")
221+
})
222+
}
223+
}
224+
}
212225
}
213226

214227
fun isModified(): Boolean {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.utbot.intellij.plugin.util
2+
3+
import com.intellij.openapi.application.ApplicationManager
4+
import com.intellij.openapi.fileEditor.FileEditorManager
5+
import com.intellij.openapi.fileEditor.OpenFileDescriptor
6+
import com.intellij.openapi.project.Project
7+
import com.intellij.openapi.vfs.VfsUtil
8+
import java.io.File
9+
import java.nio.charset.Charset
10+
import org.utbot.framework.UtSettings
11+
12+
fun showSettingsEditor(project: Project, key: String? = null) {
13+
val ioFile = File(UtSettings.getPath())
14+
ApplicationManager.getApplication().executeOnPooledThread {
15+
var logicalLine: Int = -1
16+
key?.let {
17+
logicalLine = ioFile.readLines(Charset.defaultCharset())
18+
.indexOfFirst { s -> s.startsWith("$key=") or s.startsWith("#$key=") }
19+
}
20+
VfsUtil.findFileByIoFile(ioFile, true)?.let {
21+
val descriptor = if (logicalLine != -1) {
22+
OpenFileDescriptor(project, it, logicalLine, 0)
23+
} else {
24+
OpenFileDescriptor(project, it)
25+
}
26+
ApplicationManager.getApplication().invokeLater {
27+
FileEditorManager.getInstance(project).openTextEditor(descriptor, true)
28+
}
29+
}
30+
}
31+
}

0 commit comments

Comments
 (0)