|
15 | 15 | */ |
16 | 16 | package com.intellij.java.analysis.codeInspection; |
17 | 17 |
|
| 18 | +import com.intellij.java.language.JavaFeature; |
18 | 19 | import com.intellij.java.language.JavaLanguage; |
19 | 20 | import com.intellij.java.language.psi.JavaElementVisitor; |
20 | 21 | import com.intellij.java.language.psi.PsiClass; |
21 | 22 | import com.intellij.java.language.psi.PsiField; |
22 | 23 | import com.intellij.java.language.psi.PsiMethod; |
| 24 | +import com.intellij.java.language.psi.util.PsiUtil; |
23 | 25 | import consulo.java.deadCodeNotWorking.OldStyleInspection; |
24 | 26 | import consulo.language.Language; |
25 | 27 | import consulo.language.editor.inspection.*; |
|
31 | 33 | import consulo.language.psi.PsiFile; |
32 | 34 | import consulo.language.psi.PsiNamedElement; |
33 | 35 | import consulo.language.psi.util.PsiTreeUtil; |
34 | | - |
35 | 36 | import consulo.localize.LocalizeValue; |
36 | 37 | import jakarta.annotation.Nonnull; |
37 | 38 | import jakarta.annotation.Nullable; |
38 | 39 |
|
| 40 | +import java.util.Set; |
| 41 | + |
39 | 42 | public abstract class AbstractBaseJavaLocalInspectionTool<State> extends LocalInspectionTool implements OldStyleInspection { |
| 43 | + /** |
| 44 | + * @return set of the features required for a given inspection. The inspection will not be launched on the files where |
| 45 | + * the corresponding features are not available. |
| 46 | + */ |
| 47 | + @Nonnull |
| 48 | + public Set<JavaFeature> requiredFeatures() { |
| 49 | + return Set.of(); |
| 50 | + } |
| 51 | + |
| 52 | + @Override |
| 53 | + public boolean isAvailableForFile(@Nonnull PsiFile file) { |
| 54 | + for (JavaFeature feature : requiredFeatures()) { |
| 55 | + if (!PsiUtil.isAvailable(feature, file)) { |
| 56 | + return false; |
| 57 | + } |
| 58 | + } |
| 59 | + return true; |
| 60 | + } |
| 61 | + |
40 | 62 | /** |
41 | 63 | * Override this to report problems at method level. |
42 | 64 | * |
|
0 commit comments