Skip to content

Commit 11e17ec

Browse files
UCT-716: Refactored overriding deprecated property inspection
1 parent fd6e4e2 commit 11e17ec

File tree

1 file changed

+34
-61
lines changed

1 file changed

+34
-61
lines changed

src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedProperty.java

Lines changed: 34 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -8,80 +8,53 @@
88
import com.intellij.codeInspection.ProblemHighlightType;
99
import com.intellij.codeInspection.ProblemsHolder;
1010
import com.intellij.openapi.project.Project;
11-
import com.intellij.psi.PsiElementVisitor;
12-
import com.jetbrains.php.lang.inspections.PhpInspection;
1311
import com.jetbrains.php.lang.psi.elements.Field;
1412
import com.jetbrains.php.lang.psi.elements.PhpClass;
1513
import com.jetbrains.php.lang.psi.elements.impl.ClassConstImpl;
16-
import com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor;
1714
import com.magento.idea.magento2uct.inspections.UctProblemsHolder;
15+
import com.magento.idea.magento2uct.inspections.php.OverriddenFieldInspection;
16+
import com.magento.idea.magento2uct.packages.IssueSeverityLevel;
1817
import com.magento.idea.magento2uct.packages.SupportedIssue;
19-
import com.magento.idea.magento2uct.settings.UctSettingsService;
2018
import com.magento.idea.magento2uct.versioning.VersionStateManager;
2119
import org.jetbrains.annotations.NotNull;
2220

23-
public class OverridingDeprecatedProperty extends PhpInspection {
21+
public class OverridingDeprecatedProperty extends OverriddenFieldInspection {
2422

2523
@Override
26-
@SuppressWarnings("PMD.CognitiveComplexity")
27-
public @NotNull PsiElementVisitor buildVisitor(
24+
protected void execute(
25+
final Project project,
2826
final @NotNull ProblemsHolder problemsHolder,
29-
final boolean isOnTheFly
27+
final Field field,
28+
final Field overriddenField,
29+
final PhpClass parentClass
3030
) {
31-
return new PhpTypeAnalyserVisitor() {
32-
33-
@Override
34-
public void visitPhpField(final Field field) {
35-
final Project project = field.getProject();
36-
final UctSettingsService settings = UctSettingsService.getInstance(project);
37-
38-
if (!settings.isEnabled() || !settings.isIssueLevelSatisfiable(
39-
SupportedIssue.OVERRIDING_DEPRECATED_PROPERTY.getLevel())
40-
) {
41-
return;
42-
}
43-
super.visitPhpField(field);
44-
45-
if (field instanceof ClassConstImpl) {
46-
return;
47-
}
48-
final PhpClass phpClass = field.getContainingClass();
31+
if (!VersionStateManager.getInstance(project).isDeprecated(overriddenField.getFQN())) {
32+
return;
33+
}
34+
35+
if (problemsHolder instanceof UctProblemsHolder) {
36+
((UctProblemsHolder) problemsHolder).setReservedErrorCode(
37+
SupportedIssue.OVERRIDING_DEPRECATED_PROPERTY.getCode()
38+
);
39+
}
40+
problemsHolder.registerProblem(
41+
field,
42+
SupportedIssue.OVERRIDING_DEPRECATED_PROPERTY.getMessage(
43+
parentClass.getFQN()
44+
.concat("::")
45+
.concat(overriddenField.getName())
46+
),
47+
ProblemHighlightType.LIKE_DEPRECATED
48+
);
49+
}
4950

50-
if (phpClass == null) {
51-
return;
52-
}
53-
PhpClass parentClass = phpClass.getSuperClass();
54-
boolean isFound = false;
51+
@Override
52+
protected boolean isTypeValid(final Field field) {
53+
return !(field instanceof ClassConstImpl);
54+
}
5555

56-
while (parentClass != null && !isFound) {
57-
for (final Field parentField : parentClass.getOwnFields()) {
58-
if (!(parentField instanceof ClassConstImpl)
59-
&& parentField.getName().equals(field.getName())
60-
&& VersionStateManager
61-
.getInstance(field.getProject())
62-
.isDeprecated(parentField.getFQN())
63-
) {
64-
if (problemsHolder instanceof UctProblemsHolder) {
65-
((UctProblemsHolder) problemsHolder).setReservedErrorCode(
66-
SupportedIssue.OVERRIDING_DEPRECATED_PROPERTY.getCode()
67-
);
68-
}
69-
problemsHolder.registerProblem(
70-
field,
71-
SupportedIssue.OVERRIDING_DEPRECATED_PROPERTY.getMessage(
72-
parentClass.getFQN()
73-
.concat("::")
74-
.concat(parentField.getName())
75-
),
76-
ProblemHighlightType.LIKE_DEPRECATED
77-
);
78-
isFound = true;
79-
break;
80-
}
81-
}
82-
parentClass = parentClass.getSuperClass();
83-
}
84-
}
85-
};
56+
@Override
57+
protected IssueSeverityLevel getSeverityLevel() {
58+
return SupportedIssue.OVERRIDING_DEPRECATED_PROPERTY.getLevel();
8659
}
8760
}

0 commit comments

Comments
 (0)