Skip to content

Commit 83ae086

Browse files
[#1831] EmptyClassInspector: resolved false positives (enums)
1 parent a665c27 commit 83ae086

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/main/java/com/kalessil/phpStorm/phpInspectionsEA/inspectors/semanticalAnalysis/classes/EmptyClassInspector.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
*/
2323

2424
public class EmptyClassInspector extends BasePhpInspection {
25-
private static final String message = "Class does not contain any properties or methods.";
25+
private static final String messageClass = "Class does not contain any properties or methods.";
26+
private static final String messageEnum = "Enum does not contain any values or methods.";
2627

2728
@NotNull
2829
@Override
@@ -42,8 +43,11 @@ public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, bool
4243
return new BasePhpElementVisitor() {
4344
@Override
4445
public void visitPhpClass(@NotNull PhpClass clazz) {
45-
if (!clazz.isInterface() && !clazz.isDeprecated() && !clazz.isAnonymous()) {
46-
final boolean isEmpty = clazz.getOwnFields().length == 0 && clazz.getOwnMethods().length == 0 && clazz.getTraits().length == 0;
46+
if (! clazz.isInterface() && ! clazz.isDeprecated() && ! clazz.isAnonymous()) {
47+
final boolean isEmpty = clazz.getOwnFields().length == 0 &&
48+
clazz.getOwnMethods().length == 0 &&
49+
clazz.getTraits().length == 0 &&
50+
clazz.getEnumCases().isEmpty();
4751
if (isEmpty) {
4852
final PhpClass parent = OpenapiResolveUtil.resolveSuperClass(clazz);
4953
if (parent != null) {
@@ -57,7 +61,7 @@ public void visitPhpClass(@NotNull PhpClass clazz) {
5761
if (nameNode != null) {
5862
holder.registerProblem(
5963
nameNode,
60-
MessagesPresentationUtil.prefixWithEa(message)
64+
MessagesPresentationUtil.prefixWithEa(clazz.isEnum() ? messageEnum : messageClass )
6165
);
6266
}
6367
}

testData/fixtures/classes/empty-class.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ class ClassWithAProperty { public $property; }
44
class ClassWithAMethod { public function __construct() {} }
55

66
class <weak_warning descr="[EA] Class does not contain any properties or methods.">AnEmptyClass</weak_warning> {}
7+
enum <weak_warning descr="[EA] Enum does not contain any values or methods.">AnEmptyEnum</weak_warning> {}
78

89
/* false-positives: empty interface */
910
interface EmptyInterface {}

0 commit comments

Comments
 (0)