Skip to content

Commit 23d1931

Browse files
UCT-1030: Added config files support
1 parent a26d342 commit 23d1931

File tree

7 files changed

+69
-24
lines changed

7 files changed

+69
-24
lines changed

src/com/magento/idea/magento2uct/execution/GenerateUctReportCommand.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,6 @@ public void execute() {
135135
boolean isModuleHeaderPrinted = false;
136136

137137
for (final PsiFile psiFile : new ModuleFilesScanner(componentData)) {
138-
if (!(psiFile instanceof PhpFile)) {
139-
continue;
140-
}
141138
final String filename = psiFile.getVirtualFile().getPath();
142139
final UctInspectionManager inspectionManager = new UctInspectionManager(
143140
project

src/com/magento/idea/magento2uct/execution/scanner/ModuleFilesScanner.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import com.intellij.psi.PsiDirectory;
99
import com.intellij.psi.PsiFile;
10-
import com.jetbrains.php.lang.psi.PhpFile;
1110
import com.magento.idea.magento2uct.execution.scanner.data.ComponentData;
11+
import com.magento.idea.magento2uct.packages.SupportedIssue;
1212
import java.util.ArrayList;
1313
import java.util.Iterator;
1414
import java.util.List;
@@ -53,9 +53,12 @@ private List<PsiFile> run() {
5353
*/
5454
private void collectFilesInDirectoryRecursively(final @NotNull PsiDirectory directory) {
5555
for (final PsiFile file : directory.getFiles()) {
56-
if (file instanceof PhpFile) {
57-
files.add(file);
56+
if (SupportedIssue.getSupportedFileTypes().stream().noneMatch(
57+
clazz -> clazz.isInstance(file))
58+
) {
59+
continue;
5860
}
61+
files.add(file);
5962
}
6063

6164
for (final PsiDirectory subDirectory : directory.getSubdirectories()) {

src/com/magento/idea/magento2uct/inspections/UctInspectionManager.java

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.intellij.psi.PsiElementVisitor;
1212
import com.intellij.psi.PsiFile;
1313
import com.intellij.psi.util.PsiTreeUtil;
14+
import com.intellij.psi.xml.XmlFile;
1415
import com.jetbrains.php.codeInsight.PhpCodeInsightUtil;
1516
import com.jetbrains.php.lang.psi.PhpFile;
1617
import com.jetbrains.php.lang.psi.elements.AssignmentExpression;
@@ -49,7 +50,9 @@ public UctInspectionManager(final @NotNull Project project) {
4950
* @return ProblemsHolder
5051
*/
5152
public @Nullable UctProblemsHolder run(final PsiFile psiFile) {
52-
if (!(psiFile instanceof PhpFile)) {
53+
if (SupportedIssue.getSupportedFileTypes().stream().noneMatch(
54+
clazz -> clazz.isInstance(psiFile))
55+
) {
5356
return null;
5457
}
5558
final UctProblemsHolder problemsHolder = new UctProblemsHolder(
@@ -78,25 +81,29 @@ public UctInspectionManager(final @NotNull Project project) {
7881
private List<PsiElement> collectElements(final @NotNull PsiFile psiFile) {
7982
final List<PsiElement> elements = new LinkedList<>();
8083

81-
final PhpClass phpClass = GetFirstClassOfFile.getInstance().execute((PhpFile) psiFile);
84+
if (psiFile instanceof PhpFile) {
85+
final PhpClass phpClass = GetFirstClassOfFile.getInstance().execute((PhpFile) psiFile);
8286

83-
if (phpClass != null) {
84-
elements.add(phpClass);
85-
final PhpPsiElement scopeForUseOperator = PhpCodeInsightUtil.findScopeForUseOperator(
86-
phpClass
87-
);
87+
if (phpClass != null) {
88+
elements.add(phpClass);
89+
final PhpPsiElement scopeForUseOperator = PhpCodeInsightUtil
90+
.findScopeForUseOperator(phpClass);
8891

89-
if (scopeForUseOperator != null) {
90-
elements.addAll(PhpCodeInsightUtil.collectImports(scopeForUseOperator));
92+
if (scopeForUseOperator != null) {
93+
elements.addAll(PhpCodeInsightUtil.collectImports(scopeForUseOperator));
94+
}
95+
elements.addAll(Arrays.asList(phpClass.getOwnFields()));
9196
}
92-
elements.addAll(Arrays.asList(phpClass.getOwnFields()));
93-
}
94-
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, ClassConstantReference.class));
95-
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, MethodReference.class));
96-
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, AssignmentExpression.class));
97-
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, ClassReference.class));
98-
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, FieldReference.class));
9997

98+
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, ClassConstantReference.class));
99+
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, MethodReference.class));
100+
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, AssignmentExpression.class));
101+
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, ClassReference.class));
102+
elements.addAll(PsiTreeUtil.findChildrenOfType(psiFile, FieldReference.class));
103+
} else if (psiFile instanceof XmlFile) {
104+
elements.add(psiFile);
105+
}
106+
100107
return elements;
101108
}
102109
}

src/com/magento/idea/magento2uct/inspections/xml/ModuleConfigFileInspection.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77

88
import com.intellij.codeInspection.InspectionManager;
99
import com.intellij.codeInspection.ProblemDescriptor;
10+
import com.intellij.codeInspection.ProblemsHolder;
1011
import com.intellij.codeInspection.XmlSuppressableInspectionTool;
1112
import com.intellij.openapi.project.Project;
1213
import com.intellij.psi.PsiElement;
14+
import com.intellij.psi.PsiElementVisitor;
1315
import com.intellij.psi.PsiFile;
1416
import com.intellij.psi.tree.IElementType;
1517
import com.intellij.psi.util.PsiTreeUtil;
@@ -39,6 +41,17 @@ abstract class ModuleConfigFileInspection extends XmlSuppressableInspectionTool
3941
"product_types.xml",
4042
"widget.xml",
4143
};
44+
private ProblemsHolder problemsHolder;
45+
46+
@Override
47+
public @NotNull PsiElementVisitor buildVisitor(
48+
final @NotNull ProblemsHolder holder,
49+
final boolean isOnTheFly
50+
) {
51+
problemsHolder = holder;
52+
53+
return super.buildVisitor(holder, isOnTheFly);
54+
}
4255

4356
@Override
4457
public @Nullable ProblemDescriptor[] checkFile(
@@ -48,8 +61,9 @@ abstract class ModuleConfigFileInspection extends XmlSuppressableInspectionTool
4861
) {
4962
final Project project = file.getProject();
5063
final UctSettingsService settings = UctSettingsService.getInstance(project);
64+
final ProblemsHolder holder = getProblemsHolder();
5165

52-
if (!settings.isEnabled()) {
66+
if (!settings.isEnabled() || holder == null) {
5367
return getEmptyResult();
5468
}
5569

@@ -72,7 +86,7 @@ abstract class ModuleConfigFileInspection extends XmlSuppressableInspectionTool
7286
continue;
7387
}
7488
// Inspection logic.
75-
doInspection(fqn, token, manager, isOnTheFly, descriptors);
89+
doInspection(fqn, token, manager, holder, isOnTheFly, descriptors);
7690
}
7791

7892
return descriptors.toArray(new ProblemDescriptor[0]);
@@ -84,17 +98,23 @@ abstract class ModuleConfigFileInspection extends XmlSuppressableInspectionTool
8498
* @param fqn String
8599
* @param target PsiElement
86100
* @param manager InspectionManager
101+
* @param holder ProblemsHolder
87102
* @param isOnTheFly boolean
88103
* @param descriptors List[ProblemDescriptor]
89104
*/
90105
protected abstract void doInspection(
91106
final @NotNull String fqn,
92107
final @NotNull PsiElement target,
93108
final @NotNull InspectionManager manager,
109+
final @NotNull ProblemsHolder holder,
94110
final boolean isOnTheFly,
95111
final @NotNull List<ProblemDescriptor> descriptors
96112
);
97113

114+
private @Nullable ProblemsHolder getProblemsHolder() {
115+
return problemsHolder;
116+
}
117+
98118
/**
99119
* Retrieves an empty result.
100120
*

src/com/magento/idea/magento2uct/inspections/xml/UsedDeprecatedTypeInConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import com.intellij.codeInspection.InspectionManager;
99
import com.intellij.codeInspection.ProblemDescriptor;
1010
import com.intellij.codeInspection.ProblemHighlightType;
11+
import com.intellij.codeInspection.ProblemsHolder;
1112
import com.intellij.psi.PsiElement;
13+
import com.magento.idea.magento2uct.inspections.UctProblemsHolder;
1214
import com.magento.idea.magento2uct.packages.SupportedIssue;
1315
import com.magento.idea.magento2uct.versioning.VersionStateManager;
1416
import java.util.List;
@@ -21,6 +23,7 @@ protected void doInspection(
2123
final @NotNull String fqn,
2224
final @NotNull PsiElement target,
2325
final @NotNull InspectionManager manager,
26+
final @NotNull ProblemsHolder holder,
2427
final boolean isOnTheFly,
2528
final @NotNull List<ProblemDescriptor> descriptors
2629
) {
@@ -32,6 +35,11 @@ protected void doInspection(
3235
).getDeprecatedInVersion(fqn)
3336
);
3437

38+
if (holder instanceof UctProblemsHolder) {
39+
((UctProblemsHolder) holder).setIssue(
40+
SupportedIssue.USED_DEPRECATED_TYPE_IN_CONFIG
41+
);
42+
}
3543
final ProblemDescriptor descriptor = manager.createProblemDescriptor(
3644
target,
3745
message,

src/com/magento/idea/magento2uct/inspections/xml/UsedNonExistentTypeInConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import com.intellij.codeInspection.InspectionManager;
99
import com.intellij.codeInspection.ProblemDescriptor;
1010
import com.intellij.codeInspection.ProblemHighlightType;
11+
import com.intellij.codeInspection.ProblemsHolder;
1112
import com.intellij.psi.PsiElement;
13+
import com.magento.idea.magento2uct.inspections.UctProblemsHolder;
1214
import com.magento.idea.magento2uct.packages.SupportedIssue;
1315
import com.magento.idea.magento2uct.versioning.VersionStateManager;
1416
import java.util.List;
@@ -21,6 +23,7 @@ protected void doInspection(
2123
final @NotNull String fqn,
2224
final @NotNull PsiElement target,
2325
final @NotNull InspectionManager manager,
26+
final @NotNull ProblemsHolder holder,
2427
final boolean isOnTheFly,
2528
final @NotNull List<ProblemDescriptor> descriptors
2629
) {
@@ -32,6 +35,11 @@ protected void doInspection(
3235
).getRemovedInVersion(fqn)
3336
);
3437

38+
if (holder instanceof UctProblemsHolder) {
39+
((UctProblemsHolder) holder).setIssue(
40+
SupportedIssue.USED_NON_EXISTENT_TYPE_IN_CONFIG
41+
);
42+
}
3543
final ProblemDescriptor descriptor = manager.createProblemDescriptor(
3644
target,
3745
message,

src/com/magento/idea/magento2uct/packages/SupportedIssue.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import com.intellij.codeInspection.LocalInspectionTool;
99
import com.intellij.psi.PsiElementVisitor;
10+
import com.intellij.psi.xml.XmlFile;
1011
import com.jetbrains.php.lang.psi.PhpFile;
1112
import com.magento.idea.magento2uct.bundles.UctInspectionBundle;
1213
import com.magento.idea.magento2uct.inspections.UctProblemsHolder;
@@ -401,6 +402,7 @@ public static List<PsiElementVisitor> getVisitors(
401402
public static List<Class<?>> getSupportedFileTypes() {
402403
final List<Class<?>> types = new ArrayList<>();
403404
types.add(PhpFile.class);
405+
types.add(XmlFile.class);
404406

405407
return types;
406408
}

0 commit comments

Comments
 (0)