5
5
package io.gitpod.jetbrains.remote
6
6
7
7
import com.intellij.ProjectTopics
8
+ import com.intellij.analysis.AnalysisScope
9
+ import com.intellij.codeInspection.actions.RunInspectionIntention
10
+ import com.intellij.codeInspection.ex.InspectionManagerEx
8
11
import com.intellij.openapi.diagnostic.thisLogger
9
12
import com.intellij.openapi.module.Module
10
13
import com.intellij.openapi.module.ModuleManager
14
+ import com.intellij.openapi.project.DumbService
11
15
import com.intellij.openapi.project.ModuleListener
12
16
import com.intellij.openapi.project.Project
13
17
import com.intellij.openapi.projectRoots.ProjectJdkTable
14
18
import com.intellij.openapi.projectRoots.Sdk
15
19
import com.intellij.openapi.roots.ModuleRootModificationUtil
16
20
import com.intellij.openapi.roots.ProjectRootManager
21
+ import com.intellij.openapi.vfs.VfsUtil
22
+ import com.intellij.profile.codeInspection.InspectionProfileManager
23
+ import com.intellij.psi.PsiFile
24
+ import com.intellij.psi.PsiManager
17
25
import com.intellij.util.application
26
+ import io.gitpod.jetbrains.remote.inspections.GitpodConfigInspection
27
+ import io.gitpod.jetbrains.remote.utils.GitpodConfig.gitpodYamlFile
18
28
import kotlinx.coroutines.GlobalScope
19
29
import kotlinx.coroutines.future.await
20
30
import kotlinx.coroutines.launch
31
+ import org.jetbrains.yaml.psi.YAMLFile
32
+ import java.nio.file.Paths
21
33
import java.util.concurrent.CompletableFuture
22
34
23
35
@@ -29,6 +41,34 @@ class GitpodProjectManager(
29
41
configureSdks()
30
42
}
31
43
44
+ init {
45
+ application.invokeLater {
46
+ try {
47
+ runInspection()
48
+ } catch (ex: Exception ) {
49
+ thisLogger().error(" Failed to run inspection" , ex)
50
+ }
51
+ }
52
+ }
53
+
54
+ private fun runInspection () {
55
+ val psiFile = getGitpodYamlPsiFile(project) ? : return
56
+ val profile = InspectionProfileManager .getInstance(project).currentProfile
57
+ val inspectionName = GitpodConfigInspection ::class .java.simpleName
58
+ val tool = profile.getInspectionTool(inspectionName, psiFile) ? : return
59
+ val manager = InspectionManagerEx .getInstance(project) as InspectionManagerEx
60
+ val scope = AnalysisScope (psiFile)
61
+ DumbService .getInstance(project).smartInvokeLater {
62
+ RunInspectionIntention .rerunInspection(tool, manager, scope, psiFile)
63
+ }
64
+ }
65
+
66
+ private fun getGitpodYamlPsiFile (project : Project ): PsiFile ? {
67
+ val basePath = project.basePath ? : return null
68
+ val vfile = VfsUtil .findFile(Paths .get(basePath, gitpodYamlFile), true ) ? : return null
69
+ return PsiManager .getInstance(project).findFile(vfile) as ? YAMLFile ? : return null
70
+ }
71
+
32
72
/* *
33
73
* It is a workaround for https://youtrack.jetbrains.com/issue/GTW-88
34
74
*/
0 commit comments