intellij-platform-gradle-plugin
intellij-platform-gradle-plugin copied to clipboard
Plugin verifier fails while all versions are 'compatible'
Since 2 days the runPluginVerifier task started failing on our project. Here is the execution trace:
Scheduled verifications (2): org.sonarlint.idea:6.8-SNAPSHOT against IC-203.8084.24, org.sonarlint.idea:6.8-SNAPSHOT against IC-213.5744.223 2022-07-06T17:04:01 [main] INFO verification - Finished 1 of 2 verifications (in 9,8 s): IC-203.8084.24 against org.sonarlint.idea:6.8-SNAPSHOT: Compatible. 6 usages of deprecated API. 1 usage of experimental API. 1 usage of internal API 2022-07-06T17:04:01 [main] INFO verification - Finished 2 of 2 verifications (in 9,8 s): IC-213.5744.223 against org.sonarlint.idea:6.8-SNAPSHOT: Compatible. 7 usages of scheduled for removal API and 20 usages of deprecated API. 1 usage of experimental API. 13 usages of internal API Plugin org.sonarlint.idea:6.8-SNAPSHOT against IC-203.8084.24: Compatible. 6 usages of deprecated API. 1 usage of experimental API. 1 usage of internal API Missing dependencies: module com.intellij.modules.clion (optional): Plugins declaring module 'com.intellij.modules.clion' are not found in Marketplace https://plugins.jetbrains.com module com.intellij.modules.rider (optional): Plugins declaring module 'com.intellij.modules.rider' are not found in Marketplace https://plugins.jetbrains.com Deprecated API usages (6): #Deprecated class com.intellij.openapi.util.PasswordUtil reference Deprecated class com.intellij.openapi.util.PasswordUtil is referenced in org.sonarlint.intellij.config.global.ServerConnection.getToken() : String Deprecated class com.intellij.openapi.util.PasswordUtil is referenced in org.sonarlint.intellij.config.global.ServerConnection.getPassword() : String Deprecated class com.intellij.openapi.util.PasswordUtil is referenced in org.sonarlint.intellij.config.global.ServerConnection.Builder.setPassword(String) : ServerConnection.Builder Deprecated class com.intellij.openapi.util.PasswordUtil is referenced in org.sonarlint.intellij.config.global.ServerConnection.Builder.setToken(String) : ServerConnection.Builder #Deprecated class com.intellij.openapi.module.ModuleServiceManager reference Deprecated class com.intellij.openapi.module.ModuleServiceManager is referenced in org.sonarlint.intellij.common.util.SonarLintUtils.getService(Module, Class) : T #Deprecated method com.intellij.openapi.project.Project.getBaseDir() invocation Deprecated method com.intellij.openapi.project.Project.getBaseDir() : com.intellij.openapi.vfs.VirtualFile is invoked in org.sonarlint.intellij.issue.persistence.IssuePersistence.
(Project) Experimental API usages (1): #Experimental API method com.intellij.ui.HyperlinkLabel.setTextWithHyperlink(String) invocation Experimental API method com.intellij.ui.HyperlinkLabel.setTextWithHyperlink(java.lang.String text) : void is invoked in org.sonarlint.intellij.config.global.SonarLintAboutPanel.createTelemetryPanel() : JComponent. This method can be changed in a future release leading to incompatibilities Internal API usages (1): #Internal method com.intellij.openapi.module.Module.getModuleFilePath() invocation Internal method com.intellij.openapi.module.Module.getModuleFilePath() : java.lang.String is invoked in org.sonarlint.intellij.util.SonarLintAppUtils.getPathRelativeToModuleBaseDir(Module, VirtualFile) : String. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. Plugin can be loaded/unloaded without IDE restart Plugin org.sonarlint.idea:6.8-SNAPSHOT against IC-213.5744.223: Compatible. 7 usages of scheduled for removal API and 20 usages of deprecated API. 1 usage of experimental API. 13 usages of internal API Missing dependencies: module com.intellij.modules.clion (optional): Plugins declaring module 'com.intellij.modules.clion' are not found in Marketplace https://plugins.jetbrains.com module com.intellij.modules.rider (optional): Plugins declaring module 'com.intellij.modules.rider' are not found in Marketplace https://plugins.jetbrains.com Deprecated API usages (27): #Deprecated class com.intellij.ui.components.labels.ActionLink reference Deprecated class com.intellij.ui.components.labels.ActionLink is referenced in org.sonarlint.intellij.ui.vulnerabilities.TaintVulnerabilitiesPanel.centeredLabel(String, ActionLink) : JPanel. This class will be removed in 2022.2 Deprecated class com.intellij.ui.components.labels.ActionLink is referenced in org.sonarlint.intellij.ui.vulnerabilities.TaintVulnerabilitiesPanel.centeredLabel$default(TaintVulnerabilitiesPanel, JLabel, ActionLink, int, Object) : JPanel. This class will be removed in 2022.2 Deprecated class com.intellij.ui.components.labels.ActionLink is referenced in org.sonarlint.intellij.ui.vulnerabilities.TaintVulnerabilitiesPanel.centeredLabel(JLabel, ActionLink) : JPanel. This class will be removed in 2022.2 Deprecated class com.intellij.ui.components.labels.ActionLink is referenced in org.sonarlint.intellij.ui.vulnerabilities.StripePanel.addAction(String, AnAction) : void. This class will be removed in 2022.2 Deprecated class com.intellij.ui.components.labels.ActionLink is referenced in org.sonarlint.intellij.ui.vulnerabilities.TaintVulnerabilitiesPanel.centeredLabel$default(TaintVulnerabilitiesPanel, String, ActionLink, int, Object) : JPanel. This class will be removed in 2022.2 Deprecated class com.intellij.ui.components.labels.ActionLink is referenced in org.sonarlint.intellij.ui.vulnerabilities.TaintVulnerabilitiesPanel. (Project). This class will be removed in 2022.2 #Deprecated class com.intellij.openapi.module.ModuleServiceManager reference Deprecated class com.intellij.openapi.module.ModuleServiceManager is referenced in org.sonarlint.intellij.common.util.SonarLintUtils.getService(Module, Class) : T #Deprecated method com.intellij.notification.NotificationGroup.createNotification(String, String, NotificationType, NotificationListener) invocation Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String content, com.intellij.notification.NotificationType type, com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.issue.vulnerabilities.TaintVulnerabilitiesPresenter.showBalloon(Project, String, AnAction) : void Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String content, com.intellij.notification.NotificationType type, com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.AnalysisRequirementNotifications.createNotificationOnce(Project, String, String, NotificationListener, NotificationAction[]) : void Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String content, com.intellij.notification.NotificationType type, com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.AnalysisRequirementNotifications.notifyNodeCommandException(Project) : void Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String content, com.intellij.notification.NotificationType type, com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.ProjectServerNotificationsSubscriber.EventListener.handle(ServerNotification) : void Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String content, com.intellij.notification.NotificationType type, com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.SecretsNotifications.sendNotification(Project) : void #Deprecated method com.intellij.ui.PopupHandler.installPopupHandler(JComponent, ActionGroup, String) invocation Deprecated method com.intellij.ui.PopupHandler.installPopupHandler(javax.swing.JComponent component, com.intellij.openapi.actionSystem.ActionGroup group, java.lang.String place) : java.awt.event.MouseListener is invoked in org.sonarlint.intellij.ui.tree.IssueTree.init() : void #Deprecated method com.intellij.ui.PopupHandler.installPopupHandler(JComponent, ActionGroup, String, ActionManager) invocation Deprecated method com.intellij.ui.PopupHandler.installPopupHandler(javax.swing.JComponent component, com.intellij.openapi.actionSystem.ActionGroup group, java.lang.String place, com.intellij.openapi.actionSystem.ActionManager actionManager) : java.awt.event.MouseListener is invoked in org.sonarlint.intellij.ui.tree.TaintVulnerabilityTree. (Project, TreeModel). This method will be removed in 2022.1 #Deprecated method com.intellij.openapi.project.Project.getBaseDir() invocation Deprecated method com.intellij.openapi.project.Project.getBaseDir() : com.intellij.openapi.vfs.VirtualFile is invoked in org.sonarlint.intellij.issue.persistence.IssuePersistence. (Project) #Deprecated method com.intellij.notification.NotificationGroup.createNotification$default(NotificationGroup, String, String, String, NotificationType, NotificationListener, int, Object) invocation Deprecated method com.intellij.notification.NotificationGroup.createNotification$default(com.intellij.notification.NotificationGroup arg0, java.lang.String arg1, java.lang.String arg2, java.lang.String arg3, com.intellij.notification.NotificationType arg4, com.intellij.notification.NotificationListener arg5, int arg6, java.lang.Object arg7) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.issue.hotspot.SecurityHotspotShowRequestHandler.showBalloon(Project, String, AnAction) : void #Deprecated method com.intellij.notification.NotificationGroup.createNotification(String, String, String, NotificationType) invocation Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String subtitle, java.lang.String content, com.intellij.notification.NotificationType type) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.SonarLintProjectNotifications.notifyServerNeverUpdated(String) : void Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String subtitle, java.lang.String content, com.intellij.notification.NotificationType type) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.SonarLintProjectNotifications.notifyProjectStorageInvalid() : void Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String subtitle, java.lang.String content, com.intellij.notification.NotificationType type) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.SonarLintProjectNotifications.notifyConnectionIdInvalid() : void Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String subtitle, java.lang.String content, com.intellij.notification.NotificationType type) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.SonarLintProjectNotifications.notifyServerStorageNeedsUpdate(String) : void Deprecated method com.intellij.notification.NotificationGroup.createNotification(java.lang.String title, java.lang.String subtitle, java.lang.String content, com.intellij.notification.NotificationType type) : com.intellij.notification.Notification is invoked in org.sonarlint.intellij.notifications.SonarLintProjectNotifications.notifyProjectStorageStale() : void #Deprecated method com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(AnAction, AnActionEvent, DataContext) invocation Deprecated method com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(com.intellij.openapi.actionSystem.AnAction action, com.intellij.openapi.actionSystem.AnActionEvent e, com.intellij.openapi.actionSystem.DataContext context) : void is invoked in org.sonarlint.intellij.ui.SonarLintRecentProjectPanel.performSelectedAction(InputEvent, AnAction) : AnAction #Deprecated method com.intellij.openapi.vcs.ui.Refreshable.refresh() is overridden Deprecated method com.intellij.openapi.vcs.ui.Refreshable.refresh() : void is overridden in class org.sonarlint.intellij.trigger.SonarLintCheckinHandler.MyRefreshableOnComponent #Deprecated class com.intellij.openapi.util.PasswordUtil reference Deprecated class com.intellij.openapi.util.PasswordUtil is referenced in org.sonarlint.intellij.config.global.ServerConnection.getPassword() : String Deprecated class com.intellij.openapi.util.PasswordUtil is referenced in org.sonarlint.intellij.config.global.ServerConnection.Builder.setPassword(String) : ServerConnection.Builder Deprecated class com.intellij.openapi.util.PasswordUtil is referenced in org.sonarlint.intellij.config.global.ServerConnection.Builder.setToken(String) : ServerConnection.Builder Deprecated class com.intellij.openapi.util.PasswordUtil is referenced in org.sonarlint.intellij.config.global.ServerConnection.getToken() : String Experimental API usages (1): #Experimental API method com.intellij.ui.HyperlinkLabel.setTextWithHyperlink(String) invocation Experimental API method com.intellij.ui.HyperlinkLabel.setTextWithHyperlink(java.lang.String text) : void is invoked in org.sonarlint.intellij.config.global.SonarLintAboutPanel.createTelemetryPanel() : JComponent. This method can be changed in a future release leading to incompatibilities Internal API usages (13): #Internal method com.intellij.util.PlatformUtils.isRider() invocation Internal method com.intellij.util.PlatformUtils.isRider() : boolean is invoked in org.sonarlint.intellij.fs.VirtualFileSystemListener.allEventsFor(VirtualFile, Module, ModuleFileEvent.Type) : List. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. Internal method com.intellij.util.PlatformUtils.isRider() : boolean is invoked in org.sonarlint.intellij.core.SonarLintEngineFactory.prepareExtraProps() : Map. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. Internal method com.intellij.util.PlatformUtils.isRider() : boolean is invoked in org.sonarlint.intellij.common.util.SonarLintUtils.isModuleLevelBindingEnabled() : boolean. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. Internal method com.intellij.util.PlatformUtils.isRider() : boolean is invoked in org.sonarlint.intellij.fs.EditorFileChangeListener.afterDocumentChange(Document) : void. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. #Internal method com.intellij.util.PlatformUtils.isCLion() invocation Internal method com.intellij.util.PlatformUtils.isCLion() : boolean is invoked in org.sonarlint.intellij.common.util.SonarLintUtils.isTaintVulnerabilitiesEnabled() : boolean. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. Internal method com.intellij.util.PlatformUtils.isCLion() : boolean is invoked in org.sonarlint.intellij.common.util.SonarLintUtils.isModuleLevelBindingEnabled() : boolean. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. #Internal class com.intellij.util.PlatformUtils reference Internal class com.intellij.util.PlatformUtils is referenced in org.sonarlint.intellij.fs.EditorFileChangeListener.afterDocumentChange(Document) : void. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the class is not supposed to be used in client code. Internal class com.intellij.util.PlatformUtils is referenced in org.sonarlint.intellij.common.util.SonarLintUtils.isModuleLevelBindingEnabled() : boolean. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the class is not supposed to be used in client code. Internal class com.intellij.util.PlatformUtils is referenced in org.sonarlint.intellij.fs.VirtualFileSystemListener.allEventsFor(VirtualFile, Module, ModuleFileEvent.Type) : List. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the class is not supposed to be used in client code. Internal class com.intellij.util.PlatformUtils is referenced in org.sonarlint.intellij.common.util.SonarLintUtils.isTaintVulnerabilitiesEnabled() : boolean. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the class is not supposed to be used in client code. Internal class com.intellij.util.PlatformUtils is referenced in org.sonarlint.intellij.core.SonarLintEngineFactory.prepareExtraProps() : Map. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the class is not supposed to be used in client code. #Internal method com.intellij.util.PlatformUtils.isAppCode() invocation Internal method com.intellij.util.PlatformUtils.isAppCode() : boolean is invoked in org.sonarlint.intellij.common.util.SonarLintUtils.isModuleLevelBindingEnabled() : boolean. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. #Internal method com.intellij.openapi.module.Module.getModuleFilePath() invocation Internal method com.intellij.openapi.module.Module.getModuleFilePath() : java.lang.String is invoked in org.sonarlint.intellij.util.SonarLintAppUtils.getPathRelativeToModuleBaseDir(Module, VirtualFile) : String. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation and indicates that the method is not supposed to be used in client code. Plugin can be loaded/unloaded without IDE restart 2022-07-06T17:04:01 [main] INFO verification - Total time spent downloading plugins and their dependencies: 0 ms 2022-07-06T17:04:01 [main] INFO verification - Total amount of plugins and dependencies downloaded: 0 B 2022-07-06T17:04:01 [main] INFO verification - Total amount of space used for plugins and dependencies: 0 B Task :runPluginVerifier FAILED FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':runPluginVerifier'.
SCHEDULED_FOR_REMOVAL_API_USAGES: Plugin uses API marked as scheduled for removal (ApiStatus.@ScheduledForRemoval). Check Plugin Verifier report for more details. Incompatible API Changes: https://jb.gg/intellij-api-changes
We were using the 1.7.0-SNAPSHOT version but I reproduce using the freshly released 1.7.0. I see several problems here:
- the 2021.3 check says compatible while apparently we use scheduled for removal APIs
- the task fails for a good reason, it's just that previously APIs marked like this were not checked. So the fix is in our hands
- the scheduled for removal APIs in question are not displayed in the report, so it's hard to know what causes problems
- the time and amount scores at the end look strange (0ms and 0 B)
The problem can be reproduced with this project by running ./gradlew :runPluginVerifier
FTR "scheduled for removal APIs" are not per-se an incompatibility (like most of the other failure levels)