From 4643f8d9cc10d8bf3df30ea577d99ef9b3682930 Mon Sep 17 00:00:00 2001 From: Nikita Stroganov Date: Tue, 27 Dec 2022 15:43:45 +0300 Subject: [PATCH 1/2] Fix non-physical psi element in inspections --- .../intellij/plugin/inspection/UnitTestBotInspectionTool.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/inspection/UnitTestBotInspectionTool.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/inspection/UnitTestBotInspectionTool.kt index ae7490a7ac..e1b8cf2d43 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/inspection/UnitTestBotInspectionTool.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/inspection/UnitTestBotInspectionTool.kt @@ -6,6 +6,7 @@ import com.intellij.openapi.util.TextRange import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiFile +import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.idea.search.allScope import org.utbot.sarif.* import java.nio.file.Path @@ -59,7 +60,8 @@ class UnitTestBotInspectionTool : GlobalSimpleInspectionTool() { val errorPsiFile = srcFileLogicalLocation?.fullyQualifiedName?.let { errorClassFqn -> val psiFacade = JavaPsiFacade.getInstance(srcPsiFile.project) val psiClass = psiFacade.findClass(errorClassFqn, srcPsiFile.project.allScope()) - psiClass?.containingFile + // We can't just return `psiClass?.containingFile` because it may be non-physical + psiClass?.containingFile?.virtualFile?.toPsiFile(srcPsiFile.project) } ?: srcPsiFile val errorRegion = srcFilePhysicalLocation.region val errorTextRange = getTextRange(problemsHolder.project, errorPsiFile, errorRegion) From f9237bf74ea731b81919e6e418af319a955a39f4 Mon Sep 17 00:00:00 2001 From: Nikita Stroganov Date: Tue, 27 Dec 2022 16:10:48 +0300 Subject: [PATCH 2/2] Add condition (just in case) --- .../plugin/inspection/UnitTestBotInspectionTool.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/inspection/UnitTestBotInspectionTool.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/inspection/UnitTestBotInspectionTool.kt index e1b8cf2d43..9c82d44193 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/inspection/UnitTestBotInspectionTool.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/inspection/UnitTestBotInspectionTool.kt @@ -60,8 +60,14 @@ class UnitTestBotInspectionTool : GlobalSimpleInspectionTool() { val errorPsiFile = srcFileLogicalLocation?.fullyQualifiedName?.let { errorClassFqn -> val psiFacade = JavaPsiFacade.getInstance(srcPsiFile.project) val psiClass = psiFacade.findClass(errorClassFqn, srcPsiFile.project.allScope()) - // We can't just return `psiClass?.containingFile` because it may be non-physical - psiClass?.containingFile?.virtualFile?.toPsiFile(srcPsiFile.project) + val psiFile = psiClass?.containingFile ?: return@let null + + // We can't just return psiFile because it may be non-physical + if (psiFile.isPhysical) { + psiFile + } else { + psiFile.virtualFile.toPsiFile(srcPsiFile.project) + } } ?: srcPsiFile val errorRegion = srcFilePhysicalLocation.region val errorTextRange = getTextRange(problemsHolder.project, errorPsiFile, errorRegion)