diff --git a/autograder-core/src/main/java/de/firemage/autograder/core/ProblemType.java b/autograder-core/src/main/java/de/firemage/autograder/core/ProblemType.java index 10e03914..cc5bcc6f 100644 --- a/autograder-core/src/main/java/de/firemage/autograder/core/ProblemType.java +++ b/autograder-core/src/main/java/de/firemage/autograder/core/ProblemType.java @@ -64,9 +64,7 @@ public enum ProblemType { RUNTIME_EXCEPTION_CAUGHT, OBJECTS_COMPARED_VIA_TO_STRING, FIELD_SHOULD_BE_CONSTANT, - CONSTANT_IN_INTERFACE, DO_NOT_HAVE_CONSTANTS_CLASS, - STATIC_METHOD_IN_INTERFACE, DO_NOT_USE_RAW_TYPES, DUPLICATE_CODE, TOO_FEW_PACKAGES, diff --git a/autograder-core/src/main/java/de/firemage/autograder/core/check/oop/InterfaceBadPractices.java b/autograder-core/src/main/java/de/firemage/autograder/core/check/oop/InterfaceBadPractices.java index c6994b54..7b22f3d8 100644 --- a/autograder-core/src/main/java/de/firemage/autograder/core/check/oop/InterfaceBadPractices.java +++ b/autograder-core/src/main/java/de/firemage/autograder/core/check/oop/InterfaceBadPractices.java @@ -13,8 +13,8 @@ import java.util.List; import java.util.Set; -@ExecutableCheck(reportedProblems = { ProblemType.CONSTANT_IN_INTERFACE, ProblemType.DO_NOT_HAVE_CONSTANTS_CLASS, - ProblemType.STATIC_METHOD_IN_INTERFACE, ProblemType.EMPTY_INTERFACE }) +@ExecutableCheck(reportedProblems = { ProblemType.DO_NOT_HAVE_CONSTANTS_CLASS, + ProblemType.EMPTY_INTERFACE }) public class InterfaceBadPractices extends IntegratedCheck { @Override protected void check(StaticAnalysis staticAnalysis) { @@ -43,26 +43,6 @@ public void process(CtInterface ctInterface) { new LocalizedMessage("constants-class-exp"), ProblemType.DO_NOT_HAVE_CONSTANTS_CLASS ); - } else if (!fields.isEmpty()) { - // interfaces should not have fields: - for (CtField field : fields) { - addLocalProblem( - field, - new LocalizedMessage("constants-interfaces-exp"), - ProblemType.CONSTANT_IN_INTERFACE - ); - } - } - - for (CtMethod method : methods) { - // static methods in interfaces should be avoided - if (method.isStatic()) { - addLocalProblem( - method, - new LocalizedMessage("interface-static-method-exp"), - ProblemType.STATIC_METHOD_IN_INTERFACE - ); - } } } }); diff --git a/autograder-core/src/main/resources/strings.de.ftl b/autograder-core/src/main/resources/strings.de.ftl index 8c74120f..668d3f1e 100644 --- a/autograder-core/src/main/resources/strings.de.ftl +++ b/autograder-core/src/main/resources/strings.de.ftl @@ -148,8 +148,6 @@ compare-objects-exp = Implementiere eine equals-Methode für den Typ {$type} und variable-should-be = Die Variable '{$variable}' sollte '{$suggestion}' sein. -constants-interfaces-exp = Interfaces sollten keine Attribute haben - reassigned-parameter = Dem Parameter '{$name}' sollte kein neuer Wert zugewiesen werden. double-brace-init = Die obskure 'Double Brace'-Syntax sollte vermieden werden @@ -240,8 +238,6 @@ static-field-should-be-instance = Das statische Attribut '{$name}' sollte ein In constants-class-exp = Konstanten sollten in der Klasse gespeichert werden in der sie auch verwendet werden und nicht in einer separaten Klasse. Siehe https://stackoverflow.com/a/15056462/7766117 -interface-static-method-exp = Interfaces sollte keine statischen Methoden haben, da sie nicht überschrieben werden können. - empty-interface-exp = Interfaces sollten nicht leer sein. ui-input-separation = Eingaben sollten nicht im Programm verteilt sein. Wurde auch verwendet in {$first}. diff --git a/autograder-core/src/main/resources/strings.en.ftl b/autograder-core/src/main/resources/strings.en.ftl index 5c970a3d..64c61d6a 100644 --- a/autograder-core/src/main/resources/strings.en.ftl +++ b/autograder-core/src/main/resources/strings.en.ftl @@ -150,8 +150,6 @@ compare-objects-exp = Implement an equals method for type {$type} and use it for variable-should-be = The variable '{$variable}' should be '{$suggestion}'. -constants-interfaces-exp = Interfaces must not have fields - reassigned-parameter = The parameter '{$name}' should not be assigned a new value. double-brace-init = Don't use the obscure 'double brace initialization' syntax @@ -239,8 +237,6 @@ static-field-should-be-instance = The static field '{$name}' must not be static. constants-class-exp = Constants should be saved in the class they are used in and not in a separate class. See https://stackoverflow.com/a/15056462/7766117 -interface-static-method-exp = Interfaces should not have static methods, because they can not be overwritten. - empty-interface-exp = Interfaces should not be empty. ui-input-separation = Input should not be spread over the program. Other use in {$first}. diff --git a/autograder-core/src/test/resources/de/firemage/autograder/core/check_tests/InterfaceBadPractices/code/Test.java b/autograder-core/src/test/resources/de/firemage/autograder/core/check_tests/InterfaceBadPractices/code/Test.java index 295c15fd..31419960 100644 --- a/autograder-core/src/test/resources/de/firemage/autograder/core/check_tests/InterfaceBadPractices/code/Test.java +++ b/autograder-core/src/test/resources/de/firemage/autograder/core/check_tests/InterfaceBadPractices/code/Test.java @@ -6,15 +6,7 @@ public static void main(String[] args) {} private static interface MyInterface {} /*# not ok #*/ } -interface MyConstantsInterface { /*# not ok #*/ - int MY_CONSTANT = 42; - String ANOTHER_CONSTANT = "Hello World"; -} - interface MyConstantsInterfaceWithMethods { - int MY_CONSTANT = 42; /*# not ok #*/ - String ANOTHER_CONSTANT = "Hello World"; /*# not ok #*/ - void doSomething(); default void doSomethingElse() {} @@ -24,17 +16,11 @@ interface MyInterfaceWithStaticMethod { void doSomething(); default void doSomethingElse() {} - - static void doesSomething2() {} /*# not ok #*/ } interface Bar { /*# not ok #*/ } -interface Foo { /*# not ok #*/ - public static final int FOO = 1; -} - class OuterClass { interface InnerInterface { /*# ok #*/ void doSomething(); diff --git a/autograder-core/src/test/resources/de/firemage/autograder/core/check_tests/InterfaceBadPractices/config.txt b/autograder-core/src/test/resources/de/firemage/autograder/core/check_tests/InterfaceBadPractices/config.txt index 60aec928..996d6ab2 100644 --- a/autograder-core/src/test/resources/de/firemage/autograder/core/check_tests/InterfaceBadPractices/config.txt +++ b/autograder-core/src/test/resources/de/firemage/autograder/core/check_tests/InterfaceBadPractices/config.txt @@ -1,9 +1,4 @@ oop.InterfaceBadPractices Bad practices for interfaces Test.java:6 -Test.java:9 -Test.java:15 -Test.java:16 -Test.java:28 -Test.java:31 -Test.java:34 +Test.java:21 diff --git a/sample_config.yaml b/sample_config.yaml index ad3bdf95..173193c1 100644 --- a/sample_config.yaml +++ b/sample_config.yaml @@ -32,7 +32,6 @@ problemsToReport: - RUNTIME_EXCEPTION_CAUGHT - OBJECTS_COMPARED_VIA_TO_STRING - FIELD_SHOULD_BE_CONSTANT - - CONSTANT_IN_INTERFACE - DUPLICATE_CODE - REASSIGNED_PARAMETER - DOUBLE_BRACE_INITIALIZATION @@ -63,7 +62,6 @@ problemsToReport: - EXCEPTION_WITHOUT_MESSAGE - DO_NOT_USE_RAW_TYPES - DO_NOT_HAVE_CONSTANTS_CLASS - - STATIC_METHOD_IN_INTERFACE - EMPTY_INTERFACE - UI_INPUT_SEPARATION - UI_OUTPUT_SEPARATION