Skip to content

Commit 18a2452

Browse files
UCT-722: Developed ImportedNonApiClass inspection
1 parent e65b02a commit 18a2452

File tree

5 files changed

+68
-0
lines changed

5 files changed

+68
-0
lines changed

Diff for: resources/META-INF/plugin.xml

+7
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,13 @@
403403
enabledByDefault="false"
404404
level="ERROR"
405405
implementationClass="com.magento.idea.magento2uct.inspections.php.existence.UsedNonExistentType"/>
406+
<localInspection language="PHP" groupPath="UCT"
407+
shortName="ImportedNonApiClass"
408+
bundle="uct.bundle.inspection" key="inspection.displayName.ImportedNonApiClass"
409+
groupBundle="uct.bundle.inspection" groupKey="inspection.api.group.name"
410+
enabledByDefault="false"
411+
level="WARNING"
412+
implementationClass="com.magento.idea.magento2uct.inspections.php.api.ImportedNonApiClass"/>
406413
<!-- \UCT inspection -->
407414

408415
<internalFileTemplate name="Magento Composer JSON"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<html>
2+
<body>
3+
<p>[1122] The imported class is not marked as an API.</p>
4+
<!-- tooltip end -->
5+
</body>
6+
</html>

Diff for: resources/uct/bundle/inspection.properties

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
inspection.deprecation.group.name=Deprecation
22
inspection.existence.group.name=Existence
3+
inspection.api.group.name=API
34
inspection.issues.description.link=Check https://devdocs.magento.com/upgrade-compatibility-tool/errors.html for a detailed list of Upgrade Compatibility Tool errors.
45
inspection.displayName.ExtendingDeprecatedClass=Extending from @deprecated class
56
inspection.displayName.ImportingDeprecatedClass=Importing @deprecated class
@@ -22,6 +23,7 @@ inspection.displayName.OverriddenNonExistentConstant=Overridden non-existent Ado
2223
inspection.displayName.OverriddenNonExistentProperty=Overridden non-existent Adobe Commerce property
2324
inspection.displayName.CalledNonExistentMethod=Call non-existent Adobe Commerce method
2425
inspection.displayName.UsedNonExistentType=Used non-existent Adobe Commerce type
26+
inspection.displayName.ImportedNonApiClass=Imported non Adobe Commerce API class
2527
customCode.warnings.deprecated.1131=[1131] Extending from @deprecated class ''{0}''
2628
customCode.warnings.deprecated.1132=[1132] Importing @deprecated class ''{0}''
2729
customCode.warnings.deprecated.1134=[1134] Using @deprecated class ''{0}''
@@ -43,3 +45,4 @@ customCode.critical.existence.1215=[1215] Overridden constant ''{0}'' that is re
4345
customCode.critical.existence.1515=[1515] Overridden property ''{0}'' that is removed in the ''{1}''
4446
customCode.critical.existence.1410=[1410] Called method ''{0}'' that is removed in the ''{1}''
4547
customCode.critical.existence.1110=[1110] Used type ''{0}'' that is removed in the ''{1}''
48+
customCode.critical.api.1122=[1122] Imported class ''{0}'' is not marked as an API
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2uct.inspections.php.api;
7+
8+
import com.intellij.codeInspection.ProblemHighlightType;
9+
import com.intellij.codeInspection.ProblemsHolder;
10+
import com.intellij.openapi.project.Project;
11+
import com.jetbrains.php.lang.psi.elements.PhpUse;
12+
import com.magento.idea.magento2uct.inspections.UctProblemsHolder;
13+
import com.magento.idea.magento2uct.inspections.php.ImportInspection;
14+
import com.magento.idea.magento2uct.packages.IssueSeverityLevel;
15+
import com.magento.idea.magento2uct.packages.SupportedIssue;
16+
import com.magento.idea.magento2uct.versioning.VersionStateManager;
17+
import org.jetbrains.annotations.NotNull;
18+
19+
public class ImportedNonApiClass extends ImportInspection {
20+
21+
@Override
22+
protected void execute(
23+
final Project project,
24+
final @NotNull ProblemsHolder problemsHolder,
25+
final PhpUse use,
26+
final boolean isInterface
27+
) {
28+
if (isInterface || VersionStateManager.getInstance(project).isApi(use.getFQN())) {
29+
return;
30+
}
31+
final String message = SupportedIssue.IMPORTED_NON_API_CLASS.getMessage(use.getFQN());
32+
33+
if (problemsHolder instanceof UctProblemsHolder) {
34+
((UctProblemsHolder) problemsHolder).setReservedErrorCode(
35+
SupportedIssue.IMPORTED_NON_API_CLASS.getCode()
36+
);
37+
}
38+
problemsHolder.registerProblem(use, message, ProblemHighlightType.WARNING);
39+
}
40+
41+
@Override
42+
protected IssueSeverityLevel getSeverityLevel() {
43+
return SupportedIssue.IMPORTED_NON_API_CLASS.getLevel();
44+
}
45+
}

Diff for: src/com/magento/idea/magento2uct/packages/SupportedIssue.java

+7
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.intellij.psi.PsiElementVisitor;
1010
import com.magento.idea.magento2uct.bundles.UctInspectionBundle;
1111
import com.magento.idea.magento2uct.inspections.UctProblemsHolder;
12+
import com.magento.idea.magento2uct.inspections.php.api.ImportedNonApiClass;
1213
import com.magento.idea.magento2uct.inspections.php.deprecation.CallingDeprecatedMethod;
1314
import com.magento.idea.magento2uct.inspections.php.deprecation.ExtendingDeprecatedClass;
1415
import com.magento.idea.magento2uct.inspections.php.deprecation.ImplementedDeprecatedInterface;
@@ -162,6 +163,12 @@ public enum SupportedIssue {
162163
IssueSeverityLevel.CRITICAL,
163164
"customCode.critical.existence.1110",
164165
UsedNonExistentType.class
166+
),
167+
IMPORTED_NON_API_CLASS(
168+
1122,
169+
IssueSeverityLevel.ERROR,
170+
"customCode.critical.api.1122",
171+
ImportedNonApiClass.class
165172
);
166173

167174
private final int code;

0 commit comments

Comments
 (0)