mercedes-benz / sechub-plugin-intellij

intellij plugin for sechub
MIT License
5 stars 4 forks source link

Increase the platform compatibility range #11

Closed Jeeppler closed 3 years ago

Jeeppler commented 3 years ago

The IntelliJ platform supports several IDEs. Plugins based on the IntelliJ platform, like this one, supports by default several IDEs. However, the problem with the SecHub IntelliJ Plugin is, that the compatibility range is very small. Android Studio 4.1 is based on version 201.x and RubyMine 2020.3 is based on 203.x. The problem is, this plugin only supports 202.x, therefore this plugin cannot be installed on either Android Studio 4.1 or RubyMine 2020.3.

A solution is to increase the compatibility range.

compatibility-list-intelij-plugin


Jeremias Eppler jeremias.eppler@daimler.com, Daimler TSS GmbH, imprint

Jeeppler commented 3 years ago

Have a look at this page which explains the relation between build number ranges and version numbers: https://jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html

Basically, 201 refers to 2020.1, 202 refers to 2020.2, 203 to 2020.3 and so on.

de-jcup commented 3 years ago

Hmm... unfortunately JetBrains has made some API changes:

When switching to 2020.1 as intellij version, there are gradle build failures:

 Task :compileJava FAILED
/home/myuser/projects/sechub/sechub-plugin-intellij/src/main/java-intellij/com/daimler/sechub/action/SechubImportAction.java:40: error: cannot find symbol
        @NotNull Path p = file.toNioPath();
                              ^
  symbol:   method toNioPath()
  location: variable file of type VirtualFile
/home/myuser/projects/sechub/sechub-plugin-intellij/src/main/java-intellij/com/daimler/sechub/window/SecHubToolWindow.java:157: error: cannot find symbol
        explorer.getSearchFolders().add(projectDir.toNioPath());
                                                  ^
  symbol:   method toNioPath()
  location: variable projectDir of type VirtualFile
/home/myuser/projects/sechub/sechub-plugin-intellij/src/main/java-intellij/com/daimler/sechub/window/SecHubToolWindow.java:174: error: cannot find symbol
        @Nullable VirtualFile firstAsVirtualFile = VirtualFileManager.getInstance().findFileByNioPath(first);
                                                                                   ^
  symbol:   method findFileByNioPath(Path)
  location: class VirtualFileManager
Note: /home/myuser/projects/sechub/sechub-plugin-intellij/src/main/java-intellij/com/daimler/sechub/window/SecHubToolWindowTransferSupport.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors

Albert Tregnaghi albert.tregnaghi@daimler.com, Daimler TSS GmbH, imprint

de-jcup commented 3 years ago

Maybe last commit did solve the problem, but can currently not be tested, because plugin is not starting:

2020-12-14 18:45:32,897 [  47554]  ERROR - .wm.impl.ToolWindowManagerImpl - Cannot process toolwindow SecHub 
java.lang.IllegalArgumentException: Unknown anchor constant: null
        at com.intellij.openapi.wm.ToolWindowAnchor.fromText(ToolWindowAnchor.java:67)
        at com.intellij.openapi.wm.impl.ToolWindowManagerImpl$beforeProjectOpened$$inlined$runActivity$lambda$1.accept(ToolWindowManagerImpl.kt:2050)
        at com.intellij.openapi.wm.impl.ToolWindowManagerImpl$beforeProjectOpened$$inlined$runActivity$lambda$1.accept(ToolWindowManagerImpl.kt)
        at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processWithPluginDescriptor(ExtensionPointImpl.java:285)
        at com.intellij.openapi.extensions.ExtensionPointName.processWithPluginDescriptor(ExtensionPointName.java:155)
        at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.beforeProjectOpened(ToolWindowManagerImpl.kt:2039)
        at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.access$beforeProjectOpened(ToolWindowManagerImpl.kt:90)
        at com.intellij.openapi.wm.impl.ToolWindowManagerImpl$InitToolWindowsActivity.runActivity(ToolWindowManagerImpl.kt:1873)
        at com.intellij.ide.startup.impl.StartupManagerImpl.runActivity(StartupManagerImpl.java:289)
        at com.intellij.ide.startup.impl.StartupManagerImpl.lambda$executeActivitiesFromExtensionPoint$2(StartupManagerImpl.java:187)
        at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processImplementations(ExtensionPointImpl.java:293)
        at com.intellij.ide.startup.impl.StartupManagerImpl.executeActivitiesFromExtensionPoint(StartupManagerImpl.java:168)
        at com.intellij.ide.startup.impl.StartupManagerImpl.doRunStartUpActivities(StartupManagerImpl.java:160)
        at com.intellij.ide.startup.impl.StartupManagerImpl.projectOpened(StartupManagerImpl.java:127)
        at com.intellij.openapi.project.impl.ProjectManagerImpl.doLoadProject(ProjectManagerImpl.java:458)
        at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:429)
        at com.intellij.platform.PlatformProjectOpenProcessor$Companion$openExistingProject$$inlined$runInAutoSaveDisabledMode$lambda$1.invoke(PlatformProjectOpenProcessor.kt:207)
        at com.intellij.platform.PlatformProjectOpenProcessor$Companion$openExistingProject$$inlined$runInAutoSaveDisabledMode$lambda$1.invoke(PlatformProjectOpenProcessor.kt:58)
        at com.intellij.platform.ProjectUiFrameAllocator$run$1$$special$$inlined$createModalTask$1.run(progress.kt:37)
        at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:930)
        at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:480)
        at com.intellij.openapi.progress.impl.ProgressRunner.lambda$new$0(ProgressRunner.java:77)
        at com.intellij.openapi.progress.impl.ProgressRunner.lambda$null$3(ProgressRunner.java:233)
        at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:164)
        at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:625)
        at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:570)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
        at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:151)
        at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:233)
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
2020-12-14 18:45:32,899 [  47556]  ERROR - .wm.impl.ToolWindowManagerImpl - IntelliJ IDEA 2020.1  Build #IC-201.6668.121 
de-jcup commented 3 years ago

So there are still some backward compatibility issues!

Jeeppler commented 3 years ago

@de-jcup what is the timeline for an updated release of the plugin with this fix?

Jeeppler commented 3 years ago

The new release 0.2.0 was reviewed by JetBrains and is now available in the Alpha channel.

The plugin can now be installed in both Android Studio 4.1 and RubyMine 2020.3.