From f20062a301e84af74b687fe1576795519b667539 Mon Sep 17 00:00:00 2001 From: Asaf Gabai <77976014+asafgabai@users.noreply.github.com> Date: Wed, 31 May 2023 12:35:04 +0300 Subject: [PATCH] Fix inspection errors on startup (#354) Fix IndexNotReadyException when reading cached results. Fix YarnInspection not running on startup. --- .../java/com/jfrog/ide/idea/inspections/NpmInspection.java | 6 ++++++ .../com/jfrog/ide/idea/inspections/YarnInspection.java | 7 +++++++ src/main/java/com/jfrog/ide/idea/scan/ScannerBase.java | 2 +- .../java/com/jfrog/ide/idea/ui/LocalComponentsTree.java | 3 +-- src/main/resources/META-INF/plugin.xml | 7 +++++++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/jfrog/ide/idea/inspections/NpmInspection.java b/src/main/java/com/jfrog/ide/idea/inspections/NpmInspection.java index 494a5470..91c296fb 100644 --- a/src/main/java/com/jfrog/ide/idea/inspections/NpmInspection.java +++ b/src/main/java/com/jfrog/ide/idea/inspections/NpmInspection.java @@ -9,6 +9,7 @@ import com.intellij.psi.PsiElementVisitor; import com.jfrog.ide.idea.inspections.upgradeversion.NpmUpgradeVersion; import com.jfrog.ide.idea.inspections.upgradeversion.UpgradeVersion; +import com.jfrog.ide.idea.scan.NpmScanner; import com.jfrog.ide.idea.scan.ScanManager; import com.jfrog.ide.idea.scan.ScannerBase; import org.apache.commons.lang3.StringUtils; @@ -54,10 +55,15 @@ boolean isDependency(PsiElement element) { ScannerBase getScanner(Project project, String path) { return ScanManager.getScanners(project).stream() .filter(manager -> StringUtils.equals(manager.getProjectPath(), path)) + .filter(this::isMatchingScanner) .findAny() .orElse(null); } + boolean isMatchingScanner(ScannerBase scanner) { + return scanner instanceof NpmScanner; + } + @Override String createComponentName(PsiElement element) { return StringUtils.unwrap(element.getFirstChild().getText(), "\""); diff --git a/src/main/java/com/jfrog/ide/idea/inspections/YarnInspection.java b/src/main/java/com/jfrog/ide/idea/inspections/YarnInspection.java index c65082a7..cef5a196 100644 --- a/src/main/java/com/jfrog/ide/idea/inspections/YarnInspection.java +++ b/src/main/java/com/jfrog/ide/idea/inspections/YarnInspection.java @@ -2,6 +2,8 @@ import com.jfrog.ide.idea.inspections.upgradeversion.UpgradeVersion; import com.jfrog.ide.idea.inspections.upgradeversion.YarnUpgradeVersion; +import com.jfrog.ide.idea.scan.ScannerBase; +import com.jfrog.ide.idea.scan.YarnScanner; import java.util.Collection; @@ -10,6 +12,11 @@ * @author michaels */ public class YarnInspection extends NpmInspection { + @Override + boolean isMatchingScanner(ScannerBase scanner) { + return scanner instanceof YarnScanner; + } + @Override UpgradeVersion getUpgradeVersion(String componentName, String fixVersion, Collection issue) { return new YarnUpgradeVersion(componentName, fixVersion, issue); diff --git a/src/main/java/com/jfrog/ide/idea/scan/ScannerBase.java b/src/main/java/com/jfrog/ide/idea/scan/ScannerBase.java index f07d4a2b..49a2bf65 100644 --- a/src/main/java/com/jfrog/ide/idea/scan/ScannerBase.java +++ b/src/main/java/com/jfrog/ide/idea/scan/ScannerBase.java @@ -329,7 +329,7 @@ public Set getProjectPaths() { } void runInspections() { - ApplicationManager.getApplication().invokeLater(() -> { + DumbService.getInstance(project).smartInvokeLater(() -> { PsiFile[] projectDescriptors = getProjectDescriptors(); if (ArrayUtils.isEmpty(projectDescriptors)) { return; diff --git a/src/main/java/com/jfrog/ide/idea/ui/LocalComponentsTree.java b/src/main/java/com/jfrog/ide/idea/ui/LocalComponentsTree.java index 7ebaac70..43b4a372 100644 --- a/src/main/java/com/jfrog/ide/idea/ui/LocalComponentsTree.java +++ b/src/main/java/com/jfrog/ide/idea/ui/LocalComponentsTree.java @@ -1,7 +1,6 @@ package com.jfrog.ide.idea.ui; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.JBMenuItem; import com.intellij.pom.Navigatable; @@ -208,7 +207,7 @@ private void setNodesFromCache() { populateTree(root); // Run inspections after loaded cache - DumbService.getInstance(project).runWhenSmart(() -> ScanManager.getInstance(project).runInspections(project)); + ScanManager.getInstance(project).runInspections(project); } public boolean isCacheEmpty() { diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index a7ae724d..3e64d7b6 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -76,6 +76,13 @@ enabledByDefault="true" implementationClass="com.jfrog.ide.idea.inspections.NpmInspection"/> + +