diff --git a/src/com/magento/idea/magento2uct/execution/GenerateUctReportCommand.java b/src/com/magento/idea/magento2uct/execution/GenerateUctReportCommand.java index f05221252..2418a8ad9 100644 --- a/src/com/magento/idea/magento2uct/execution/GenerateUctReportCommand.java +++ b/src/com/magento/idea/magento2uct/execution/GenerateUctReportCommand.java @@ -32,8 +32,10 @@ import com.magento.idea.magento2uct.inspections.UctProblemsHolder; import com.magento.idea.magento2uct.packages.SupportedIssue; import com.magento.idea.magento2uct.settings.UctSettingsService; +import com.magento.idea.magento2uct.util.inspection.FilterDescriptorResultsUtil; import com.magento.idea.magento2uct.util.inspection.SortDescriptorResultsUtil; import java.nio.file.Paths; +import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -128,32 +130,25 @@ public void execute() { } outputUtil.printProblemFile(filename); } + final List problems = SortDescriptorResultsUtil.sort( + FilterDescriptorResultsUtil.filter(fileProblemsHolder) + ); - for (final ProblemDescriptor descriptor - : SortDescriptorResultsUtil.sort( - fileProblemsHolder.getResults() - )) { - final Integer code = fileProblemsHolder.getErrorCodeForDescriptor( - descriptor + for (final ProblemDescriptor descriptor : problems) { + final SupportedIssue issue = fileProblemsHolder.getIssue(descriptor); + + final String errorMessage = descriptor + .getDescriptionTemplate() + .substring(6) + .trim(); + summary.addToSummary(issue.getLevel()); + reportBuilder.addIssue( + descriptor.getLineNumber() + 1, + filename, + errorMessage, + issue ); - if (code != null) { - final SupportedIssue issue = SupportedIssue.getByCode(code); - - if (issue != null) { - final String errorMessage = descriptor - .getDescriptionTemplate() - .substring(6) - .trim(); - summary.addToSummary(issue.getLevel()); - reportBuilder.addIssue( - descriptor.getLineNumber() + 1, - filename, - errorMessage, - issue - ); - } - outputUtil.printIssue(descriptor, code); - } + outputUtil.printIssue(descriptor, issue.getCode()); } } } diff --git a/src/com/magento/idea/magento2uct/inspections/UctProblemsHolder.java b/src/com/magento/idea/magento2uct/inspections/UctProblemsHolder.java index 22284ef7b..2fd198f2c 100644 --- a/src/com/magento/idea/magento2uct/inspections/UctProblemsHolder.java +++ b/src/com/magento/idea/magento2uct/inspections/UctProblemsHolder.java @@ -9,18 +9,19 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.PsiFile; +import com.magento.idea.magento2uct.packages.SupportedIssue; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; +import java.util.InputMismatchException; import java.util.List; import java.util.Map; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public class UctProblemsHolder extends ProblemsHolder { - private final Map myProblemCodes = new HashMap<>(); - private Integer reservedErrorCode; + private final Map myProblemCodes = new HashMap<>(); + private SupportedIssue issue; /** * UCT problems holder constructor. @@ -38,22 +39,22 @@ public UctProblemsHolder( } /** - * Set reserved error code. + * Set reserved issue. * - * @param errorCode int + * @param issue SupportedIssue */ - public void setReservedErrorCode(final int errorCode) { - reservedErrorCode = errorCode; + public void setIssue(final @NotNull SupportedIssue issue) { + this.issue = issue; } /** - * Get issue code by problem descriptor. + * Get issue by problem descriptor. * * @param problemDescriptor ProblemDescriptor * * @return Integer */ - public @Nullable Integer getErrorCodeForDescriptor( + public @NotNull SupportedIssue getIssue( final @NotNull ProblemDescriptor problemDescriptor ) { return myProblemCodes.get(problemDescriptor); @@ -61,13 +62,19 @@ public void setReservedErrorCode(final int errorCode) { @Override public void registerProblem(final @NotNull ProblemDescriptor problemDescriptor) { + if (issue == null) { + throw new InputMismatchException( + "For the UCT CLI inspection it is mandatory to set an issue via " + + "UctProblemsHolder.setIssue method" + ); + } final int problemCount = getMyProblems().size(); super.registerProblem(problemDescriptor); // if problem has been added successfully - if (problemCount != getMyProblems().size() && reservedErrorCode != null) { - myProblemCodes.put(problemDescriptor, reservedErrorCode); - reservedErrorCode = null;//NOPMD + if (problemCount != getMyProblems().size()) { + myProblemCodes.put(problemDescriptor, issue); + issue = null;//NOPMD } } diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/CalledNonApiMethod.java b/src/com/magento/idea/magento2uct/inspections/php/api/CalledNonApiMethod.java index cf3b3e50f..0eaf2a881 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/CalledNonApiMethod.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/CalledNonApiMethod.java @@ -32,9 +32,7 @@ protected void execute( final String message = SupportedIssue.CALLED_NON_API_METHOD.getMessage(method.getFQN()); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.CALLED_NON_API_METHOD.getCode() - ); + ((UctProblemsHolder) problemsHolder).setIssue(SupportedIssue.CALLED_NON_API_METHOD); } problemsHolder.registerProblem(methodReference, message, ProblemHighlightType.WARNING); } diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/CalledNonInterfaceMethod.java b/src/com/magento/idea/magento2uct/inspections/php/api/CalledNonInterfaceMethod.java index 2667ec9f1..1562d1b97 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/CalledNonInterfaceMethod.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/CalledNonInterfaceMethod.java @@ -69,8 +69,8 @@ protected void execute( } if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.CALLED_NON_INTERFACE_METHOD.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.CALLED_NON_INTERFACE_METHOD ); } problemsHolder.registerProblem( diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/ExtendedNonApiClass.java b/src/com/magento/idea/magento2uct/inspections/php/api/ExtendedNonApiClass.java index ffaafeef5..d4225f9de 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/ExtendedNonApiClass.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/ExtendedNonApiClass.java @@ -35,8 +35,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.EXTENDED_NON_API_CLASS.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.EXTENDED_NON_API_CLASS ); } diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/ImplementedNonApiInterface.java b/src/com/magento/idea/magento2uct/inspections/php/api/ImplementedNonApiInterface.java index e7bff251a..9b5bba599 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/ImplementedNonApiInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/ImplementedNonApiInterface.java @@ -33,8 +33,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPLEMENTED_NON_API_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPLEMENTED_NON_API_INTERFACE ); } problemsHolder.registerProblem(reference, message, ProblemHighlightType.WARNING); diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/ImportedNonApiClass.java b/src/com/magento/idea/magento2uct/inspections/php/api/ImportedNonApiClass.java index fc262c271..805cac53b 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/ImportedNonApiClass.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/ImportedNonApiClass.java @@ -31,8 +31,8 @@ protected void execute( final String message = SupportedIssue.IMPORTED_NON_API_CLASS.getMessage(use.getFQN()); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPORTED_NON_API_CLASS.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPORTED_NON_API_CLASS ); } problemsHolder.registerProblem(use, message, ProblemHighlightType.WARNING); diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/ImportedNonApiInterface.java b/src/com/magento/idea/magento2uct/inspections/php/api/ImportedNonApiInterface.java index 6ff75e985..09bf85767 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/ImportedNonApiInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/ImportedNonApiInterface.java @@ -31,8 +31,8 @@ protected void execute( final String message = SupportedIssue.IMPORTED_NON_API_INTERFACE.getMessage(use.getFQN()); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPORTED_NON_API_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPORTED_NON_API_INTERFACE ); } problemsHolder.registerProblem(use, message, ProblemHighlightType.WARNING); diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/InheritedNonApiInterface.java b/src/com/magento/idea/magento2uct/inspections/php/api/InheritedNonApiInterface.java index 3bada5852..a2638a987 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/InheritedNonApiInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/InheritedNonApiInterface.java @@ -31,8 +31,8 @@ protected void execute( final String message = SupportedIssue.INHERITED_NON_API_INTERFACE.getMessage(fqn); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.INHERITED_NON_API_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.INHERITED_NON_API_INTERFACE ); } problemsHolder.registerProblem(reference, message, ProblemHighlightType.WARNING); diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/OverriddenNonApiConstant.java b/src/com/magento/idea/magento2uct/inspections/php/api/OverriddenNonApiConstant.java index eeb644aea..9e2a27dd3 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/OverriddenNonApiConstant.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/OverriddenNonApiConstant.java @@ -36,8 +36,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.OVERRIDDEN_NON_API_CONSTANT.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.OVERRIDDEN_NON_API_CONSTANT ); } problemsHolder.registerProblem(field, message, ProblemHighlightType.WARNING); diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/OverriddenNonApiProperty.java b/src/com/magento/idea/magento2uct/inspections/php/api/OverriddenNonApiProperty.java index 769e2f3a6..0d3d6d691 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/OverriddenNonApiProperty.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/OverriddenNonApiProperty.java @@ -36,8 +36,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.OVERRIDDEN_NON_API_PROPERTY.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.OVERRIDDEN_NON_API_PROPERTY ); } problemsHolder.registerProblem(property, message, ProblemHighlightType.WARNING); diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/PossibleDependencyOnImplDetails.java b/src/com/magento/idea/magento2uct/inspections/php/api/PossibleDependencyOnImplDetails.java index 1091eef18..52bfa3e45 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/PossibleDependencyOnImplDetails.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/PossibleDependencyOnImplDetails.java @@ -34,8 +34,8 @@ protected void execute( if (VersionStateManager.getInstance(project).isApi(implementedInterface.getFQN())) { if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.POSSIBLE_DEPENDENCY_ON_IMPL_DETAILS.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.POSSIBLE_DEPENDENCY_ON_IMPL_DETAILS ); } diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiConstant.java b/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiConstant.java index b77c366df..cd490a054 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiConstant.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiConstant.java @@ -46,8 +46,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USED_NON_API_CONSTANT.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USED_NON_API_CONSTANT ); } problemsHolder.registerProblem(constantReference, message, ProblemHighlightType.WARNING); diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiProperty.java b/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiProperty.java index ac5bc11d8..7106c5036 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiProperty.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiProperty.java @@ -36,9 +36,7 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USED_NON_API_PROPERTY.getCode() - ); + ((UctProblemsHolder) problemsHolder).setIssue(SupportedIssue.USED_NON_API_PROPERTY); } problemsHolder.registerProblem(propertyReference, message, ProblemHighlightType.WARNING); } diff --git a/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiType.java b/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiType.java index 45129bd5a..886d22c5d 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiType.java +++ b/src/com/magento/idea/magento2uct/inspections/php/api/UsedNonApiType.java @@ -32,9 +32,7 @@ protected void execute( final String message = SupportedIssue.USED_NON_API_TYPE.getMessage(phpClass.getFQN()); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USED_NON_API_TYPE.getCode() - ); + ((UctProblemsHolder) problemsHolder).setIssue(SupportedIssue.USED_NON_API_TYPE); } problemsHolder.registerProblem(reference, message, ProblemHighlightType.WARNING); } diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/CallingDeprecatedMethod.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/CallingDeprecatedMethod.java index 59184e62c..324fee633 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/CallingDeprecatedMethod.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/CallingDeprecatedMethod.java @@ -30,8 +30,8 @@ protected void execute( if (VersionStateManager.getInstance(project).isDeprecated(type)) { if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.CALLING_DEPRECATED_METHOD.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.CALLING_DEPRECATED_METHOD ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/ExtendingDeprecatedClass.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/ExtendingDeprecatedClass.java index 4aa53c909..5374cac1b 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/ExtendingDeprecatedClass.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/ExtendingDeprecatedClass.java @@ -38,8 +38,8 @@ protected void execute( for (final ClassReference classReference : childExtends.getReferenceElements()) { if (parentFqn.equals(classReference.getFQN())) { if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.EXTENDING_DEPRECATED_CLASS.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.EXTENDING_DEPRECATED_CLASS ); } problemsHolder.registerProblem( diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImplementedDeprecatedInterface.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImplementedDeprecatedInterface.java index 2380eb3c7..781dd7fb4 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImplementedDeprecatedInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImplementedDeprecatedInterface.java @@ -27,8 +27,8 @@ protected void execute( ) { if (VersionStateManager.getInstance(project).isDeprecated(interfaceFqn)) { if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPLEMENTED_DEPRECATED_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPLEMENTED_DEPRECATED_INTERFACE ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImportingDeprecatedClass.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImportingDeprecatedClass.java index 7051aabad..4cbf65fdf 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImportingDeprecatedClass.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImportingDeprecatedClass.java @@ -30,8 +30,8 @@ protected void execute( return; } if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPORTING_DEPRECATED_CLASS.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPORTING_DEPRECATED_CLASS ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImportingDeprecatedInterface.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImportingDeprecatedInterface.java index 04823011c..e4eb0f1d3 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImportingDeprecatedInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/ImportingDeprecatedInterface.java @@ -30,8 +30,8 @@ protected void execute( return; } if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPORTING_DEPRECATED_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPORTING_DEPRECATED_INTERFACE ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/InheritedDeprecatedInterface.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/InheritedDeprecatedInterface.java index 98c58d1cd..2a00dbadc 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/InheritedDeprecatedInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/InheritedDeprecatedInterface.java @@ -27,8 +27,8 @@ protected void execute( ) { if (VersionStateManager.getInstance(project).isDeprecated(interfaceFqn)) { if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.INHERITED_DEPRECATED_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.INHERITED_DEPRECATED_INTERFACE ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedConstant.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedConstant.java index edff0adab..f33906eca 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedConstant.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedConstant.java @@ -33,8 +33,8 @@ protected void execute( } if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.OVERRIDING_DEPRECATED_CONSTANT.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.OVERRIDING_DEPRECATED_CONSTANT ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedProperty.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedProperty.java index b7277bd9d..373bf4f43 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedProperty.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/OverridingDeprecatedProperty.java @@ -33,8 +33,8 @@ protected void execute( } if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.OVERRIDING_DEPRECATED_PROPERTY.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.OVERRIDING_DEPRECATED_PROPERTY ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedClass.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedClass.java index 086b42fbb..ba6fc4fb4 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedClass.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedClass.java @@ -31,8 +31,8 @@ protected void execute( return; } if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USING_DEPRECATED_CLASS.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USING_DEPRECATED_CLASS ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedConstant.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedConstant.java index b18a30176..092cc835c 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedConstant.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedConstant.java @@ -51,8 +51,8 @@ protected void execute( } if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USING_DEPRECATED_CONSTANT.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USING_DEPRECATED_CONSTANT ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedInterface.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedInterface.java index 30ac758c1..4e6b37a0c 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedInterface.java @@ -32,8 +32,8 @@ protected void execute( } if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USING_DEPRECATED_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USING_DEPRECATED_INTERFACE ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedProperty.java b/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedProperty.java index aae5284c7..ad1277825 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedProperty.java +++ b/src/com/magento/idea/magento2uct/inspections/php/deprecation/UsingDeprecatedProperty.java @@ -31,8 +31,8 @@ protected void execute( ) { if (VersionStateManager.getInstance(project).isDeprecated(field.getFQN())) { if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USING_DEPRECATED_PROPERTY.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USING_DEPRECATED_PROPERTY ); } final String deprecatedIn = VersionStateManager.getInstance(project) @@ -54,8 +54,8 @@ protected void execute( } if (VersionStateManager.getInstance(project).isDeprecated(containingClass.getFQN())) { if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USING_DEPRECATED_PROPERTY.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USING_DEPRECATED_PROPERTY ); } final String deprecatedIn = VersionStateManager.getInstance(project) diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/CalledNonExistentMethod.java b/src/com/magento/idea/magento2uct/inspections/php/existence/CalledNonExistentMethod.java index 7b8ef3215..9b7e15c60 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/CalledNonExistentMethod.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/CalledNonExistentMethod.java @@ -37,8 +37,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.CALLED_NON_EXISTENT_METHOD.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.CALLED_NON_EXISTENT_METHOD ); } problemsHolder.registerProblem(methodReference, message, ProblemHighlightType.ERROR); diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/ExtendedNonExistentClass.java b/src/com/magento/idea/magento2uct/inspections/php/existence/ExtendedNonExistentClass.java index 43eb8338e..19c1830e2 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/ExtendedNonExistentClass.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/ExtendedNonExistentClass.java @@ -38,8 +38,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.EXTENDED_NON_EXISTENT_CLASS.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.EXTENDED_NON_EXISTENT_CLASS ); } diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/ImplementedNonExistentInterface.java b/src/com/magento/idea/magento2uct/inspections/php/existence/ImplementedNonExistentInterface.java index 81c06bfcb..6706f7a7f 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/ImplementedNonExistentInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/ImplementedNonExistentInterface.java @@ -34,8 +34,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPLEMENTED_NON_EXISTENT_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPLEMENTED_NON_EXISTENT_INTERFACE ); } problemsHolder.registerProblem(reference, message, ProblemHighlightType.ERROR); diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/ImportingNonExistentClass.java b/src/com/magento/idea/magento2uct/inspections/php/existence/ImportingNonExistentClass.java index 21cc92660..f7b2ec830 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/ImportingNonExistentClass.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/ImportingNonExistentClass.java @@ -34,8 +34,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPORTED_NON_EXISTENT_CLASS.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPORTED_NON_EXISTENT_CLASS ); } problemsHolder.registerProblem( diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/ImportingNonExistentInterface.java b/src/com/magento/idea/magento2uct/inspections/php/existence/ImportingNonExistentInterface.java index 85663bf53..064121b79 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/ImportingNonExistentInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/ImportingNonExistentInterface.java @@ -34,8 +34,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.IMPORTED_NON_EXISTENT_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.IMPORTED_NON_EXISTENT_INTERFACE ); } problemsHolder.registerProblem( diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/InheritedNonExistentInterface.java b/src/com/magento/idea/magento2uct/inspections/php/existence/InheritedNonExistentInterface.java index c2e90d833..5db871ce8 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/InheritedNonExistentInterface.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/InheritedNonExistentInterface.java @@ -34,8 +34,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.INHERITED_NON_EXISTENT_INTERFACE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.INHERITED_NON_EXISTENT_INTERFACE ); } problemsHolder.registerProblem(reference, message, ProblemHighlightType.ERROR); diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/OverriddenNonExistentConstant.java b/src/com/magento/idea/magento2uct/inspections/php/existence/OverriddenNonExistentConstant.java index f8351fa66..475e294a2 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/OverriddenNonExistentConstant.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/OverriddenNonExistentConstant.java @@ -44,8 +44,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.OVERRIDDEN_NON_EXISTENT_CONSTANT.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.OVERRIDDEN_NON_EXISTENT_CONSTANT ); } problemsHolder.registerProblem(field, message, ProblemHighlightType.ERROR); diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/OverriddenNonExistentProperty.java b/src/com/magento/idea/magento2uct/inspections/php/existence/OverriddenNonExistentProperty.java index 3ccbb45d0..823d54c6b 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/OverriddenNonExistentProperty.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/OverriddenNonExistentProperty.java @@ -44,8 +44,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.OVERRIDDEN_NON_EXISTENT_PROPERTY.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.OVERRIDDEN_NON_EXISTENT_PROPERTY ); } problemsHolder.registerProblem(property, message, ProblemHighlightType.ERROR); diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentConstant.java b/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentConstant.java index 48f54bd34..b8a0b6ceb 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentConstant.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentConstant.java @@ -47,8 +47,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USED_NON_EXISTENT_CONSTANT.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USED_NON_EXISTENT_CONSTANT ); } problemsHolder.registerProblem(constantReference, message, ProblemHighlightType.ERROR); diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentProperty.java b/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentProperty.java index 7e67097b8..9d8fe32ef 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentProperty.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentProperty.java @@ -37,8 +37,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USED_NON_EXISTENT_PROPERTY.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USED_NON_EXISTENT_PROPERTY ); } problemsHolder.registerProblem(fieldReference, message, ProblemHighlightType.ERROR); diff --git a/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentType.java b/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentType.java index 3f67cef46..34db3c90f 100644 --- a/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentType.java +++ b/src/com/magento/idea/magento2uct/inspections/php/existence/UsedNonExistentType.java @@ -35,8 +35,8 @@ protected void execute( ); if (problemsHolder instanceof UctProblemsHolder) { - ((UctProblemsHolder) problemsHolder).setReservedErrorCode( - SupportedIssue.USED_NON_EXISTENT_TYPE.getCode() + ((UctProblemsHolder) problemsHolder).setIssue( + SupportedIssue.USED_NON_EXISTENT_TYPE ); } problemsHolder.registerProblem(reference, message, ProblemHighlightType.ERROR); diff --git a/src/com/magento/idea/magento2uct/util/inspection/FilterDescriptorResultsUtil.java b/src/com/magento/idea/magento2uct/util/inspection/FilterDescriptorResultsUtil.java new file mode 100644 index 000000000..4aab585a0 --- /dev/null +++ b/src/com/magento/idea/magento2uct/util/inspection/FilterDescriptorResultsUtil.java @@ -0,0 +1,98 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +package com.magento.idea.magento2uct.util.inspection; + +import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.psi.PsiElement; +import com.magento.idea.magento2uct.inspections.UctProblemsHolder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +public final class FilterDescriptorResultsUtil { + + private FilterDescriptorResultsUtil() { + } + + /** + * Filter problems by its severity. + * + * @param problemsHolder UctProblemsHolder + * + * @return List[ProblemDescriptor] + */ + public static List filter(final UctProblemsHolder problemsHolder) { + final List problems = problemsHolder.getResults(); + + if (problems.isEmpty()) { + return problems; + } + final List filtered = new LinkedList<>(); + final Map> grouped = groupDescriptors(problems); + + for (final Map.Entry> descriptors + : grouped.entrySet()) { + final List equalCandidates = new ArrayList<>();//NOPMD + ProblemDescriptor candidate = null; + + for (final ProblemDescriptor descriptor : descriptors.getValue()) { + if (candidate == null) { + candidate = descriptor; + continue; + } + final int newIssueSeverity = problemsHolder + .getIssue(descriptor).getLevel().getLevel(); + final int candidateIssueSeverity = problemsHolder + .getIssue(candidate).getLevel().getLevel(); + + if (newIssueSeverity == candidateIssueSeverity) { + equalCandidates.add(descriptor); + continue; + } + + if (newIssueSeverity < candidateIssueSeverity) { + candidate = descriptor; + equalCandidates.clear(); + } + } + filtered.add(candidate); + filtered.addAll(equalCandidates); + } + + return filtered; + } + + /** + * Group problems by its PSI element. + * + * @param problems List[ProblemDescriptor] + * + * @return Map[PsiElement, List[ProblemDescriptor]] + */ + private static Map> groupDescriptors( + final List problems + ) { + final Map> grouped = new HashMap<>(); + + for (final ProblemDescriptor descriptor : problems) { + final PsiElement element = descriptor.getPsiElement(); + List elementProblems; + + if (grouped.containsKey(element)) { + elementProblems = grouped.get(element); + } else { + elementProblems = new ArrayList<>();//NOPMD + } + + elementProblems.add(descriptor); + grouped.put(element, elementProblems); + } + + return grouped; + } +}