Modernize plugin for IntelliJ 2025.1+, port to Kotlin, harden security#69
Open
HilaG wants to merge 3 commits into
Open
Modernize plugin for IntelliJ 2025.1+, port to Kotlin, harden security#69HilaG wants to merge 3 commits into
HilaG wants to merge 3 commits into
Conversation
Build & platform: - Migrate to IntelliJ Platform Gradle Plugin v2 (2.14.0) - Target IntelliJ 2025.1+ (since-build 251), bump version to 2.3.0 - Upgrade Kotlin to 2.1.20, Gradle to 9.4.1 - Add .editorconfig for ktlint 12.x compatibility Java → Kotlin migration: - Delete CmdProcessBuilder.java and Parameters.java - Add CmdProcessBuilder.kt (object with @JvmStatic main) and Parameters.kt - Add jackson-module-kotlin + @JsonIgnoreProperties to fix deserialization Security & correctness fixes: - Single-quote shell args (envScript, runDir, makefileFile, target) to prevent injection - Filter blank tokens from advancedDockerSettings split - Write params to unique temp file per run (fix concurrent build corruption) - Call destroyForcibly() before exitProcess() on timeout - Fix docker path detection to probe Rancher Desktop and Homebrew locations - Replace throw Error() with throw RuntimeException() in getClassPath() - Fix Main-Class manifest: package name → CmdProcessBuilder - Uncomment projectService registration in plugin.xml Code quality: - isDockerImage/isDockerfile changed from String to Boolean throughout - Implement checkConfiguration() with required-field validation - Extract PLUGIN_ID constant to eliminate hardcoded duplication - Add @JsonIgnoreProperties to DockDockBuildSettings - Remove endsWith("") dead condition in DockerfileFileChooserDescriptor - Remove unused getParamsFile() function Tests: - Add unit tests: CmdProcessBuilderTest, ParametersTest, DockDockBuildTest, DockDockBuildConfigurableTest, DockDockBuildRunConfigurationTest - Add UI tests via Remote Robot (DockDockBuildUiTest, requires runIdeForUiTests) - Wire up uiTest Gradle source set and runIdeForUiTests task Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CmdProcessBuilder.java/Parameters.java, finalize Kotlin replacements with@JvmStatic mainandjackson-module-kotlinadvancedDockerSettingssplitisDockerImage/isDockerfilefromStringtoBoolean; implementcheckConfiguration()validationthrow Error()→throw RuntimeException(), wrongMain-Classmanifest, unregistered project service, deadendsWith("")condition, orphaned process on timeoutTest plan
./gradlew test— all 87 tests pass./gradlew runIde— plugin loads, run configuration dialog works, docker path auto-detected./gradlew runIdeForUiTeststhen./gradlew uiTest— UI tests pass against live IDE🤖 Generated with Claude Code