diff --git a/src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java b/src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java index 2dc1ca79..45e91855 100644 --- a/src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java +++ b/src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java @@ -20,16 +20,6 @@ public void analyze(List compilationUnits, Analysis analysis) { compilationUnits.forEach(cu -> cu.walk(ClassOrInterfaceDeclaration.class, walker)); - if (!walker.hasHammingClass()) { - analysis.addComment(new UseProperClassName("Hamming")); - return; - } - - if (!walker.hasGetHammingDistanceMethod()) { - analysis.addComment(new UseProperMethodName("getHammingDistance")); - return; - } - if (!walker.hasConstructor()) { analysis.addComment(new MustUseConstructor()); return; diff --git a/src/main/java/analyzer/exercises/hamming/HammingWalker.java b/src/main/java/analyzer/exercises/hamming/HammingWalker.java index a3d39927..25180374 100644 --- a/src/main/java/analyzer/exercises/hamming/HammingWalker.java +++ b/src/main/java/analyzer/exercises/hamming/HammingWalker.java @@ -1,7 +1,5 @@ package analyzer.exercises.hamming; -import static com.google.common.collect.ImmutableSet.toImmutableSet; - import com.github.javaparser.Range; import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; import com.github.javaparser.ast.body.ConstructorDeclaration; @@ -10,19 +8,12 @@ import com.github.javaparser.ast.expr.LambdaExpr; import com.github.javaparser.ast.expr.MethodCallExpr; import com.github.javaparser.ast.nodeTypes.NodeWithRange; -import com.github.javaparser.ast.stmt.BlockStmt; -import com.github.javaparser.ast.stmt.ForEachStmt; -import com.github.javaparser.ast.stmt.ForStmt; -import com.github.javaparser.ast.stmt.Statement; -import com.github.javaparser.ast.stmt.ThrowStmt; -import com.github.javaparser.ast.stmt.WhileStmt; +import com.github.javaparser.ast.stmt.*; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ListMultimap; import com.google.common.collect.Multimaps; -import static com.google.common.collect.MoreCollectors.toOptional; - import java.util.HashSet; import java.util.List; import java.util.Optional; @@ -30,17 +21,19 @@ import java.util.function.Consumer; import java.util.stream.Stream; +import static com.google.common.collect.ImmutableSet.toImmutableSet; +import static com.google.common.collect.MoreCollectors.toOptional; + class HammingWalker implements Consumer { private ClassOrInterfaceDeclaration hammingClass; private List constructors = ImmutableList.of(); private ConstructorDeclaration constructor; private ListMultimap methods = ImmutableListMultimap.of(); - private Set methodsCalledByConstructor = new HashSet<>(); + private final Set methodsCalledByConstructor = new HashSet<>(); private boolean constructorHasIfStatements; private boolean constructorThrowsIllegalArgumentDirectly; private boolean constructorMayCalculateDistanceDirectly; - private MethodDeclaration getHammingDistanceMethod; - private Set methodsCalledByGetHammingDistance = new HashSet<>(); + private final Set methodsCalledByGetHammingDistance = new HashSet<>(); private boolean getHammingDistanceMayCalculateDistanceDirectly; @Override @@ -128,8 +121,6 @@ private Optional findGetHammingDistanceMethod() { } private void walkGetHammingDistanceMethod(MethodDeclaration getHammingDistanceMethod) { - this.getHammingDistanceMethod = getHammingDistanceMethod; - getHammingDistanceMethod.getBody().ifPresent(this::walkGetHammingDistanceMethod); } @@ -178,14 +169,6 @@ private Stream getMethodsCalledBy(BlockStmt body) { .flatMap(this::getMethodCallNames); } - public boolean hasHammingClass() { - return hammingClass != null; - } - - public boolean hasGetHammingDistanceMethod() { - return getHammingDistanceMethod != null; - } - public boolean hasConstructor() { return constructor != null; } diff --git a/src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java b/src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java index a2b5a93f..7ba26fad 100644 --- a/src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java +++ b/src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java @@ -17,11 +17,7 @@ public void analyze(List compilationUnits, Analysis analysis) { compilationUnits.forEach(cu -> cu.walk(walker)); - if (!walker.hasClassTwofer) { - analysis.addComment(new UseProperClassName("Twofer")); - } else if (!walker.hasMethodTwofer) { - analysis.addComment(new UseProperMethodName("twofer")); - } else if (walker.hasHardCodedTestCases) { + if (walker.hasHardCodedTestCases) { analysis.addComment(new AvoidHardCodedTestCases()); } else if (walker.usesLambda) { // could be used later for additional comments? diff --git a/src/main/java/analyzer/exercises/twofer/TwoferWalker.java b/src/main/java/analyzer/exercises/twofer/TwoferWalker.java index 0be43980..38536a92 100644 --- a/src/main/java/analyzer/exercises/twofer/TwoferWalker.java +++ b/src/main/java/analyzer/exercises/twofer/TwoferWalker.java @@ -1,15 +1,15 @@ package analyzer.exercises.twofer; import com.github.javaparser.ast.Node; -import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; -import com.github.javaparser.ast.body.MethodDeclaration; -import com.github.javaparser.ast.expr.*; +import com.github.javaparser.ast.expr.ConditionalExpr; +import com.github.javaparser.ast.expr.LambdaExpr; +import com.github.javaparser.ast.expr.MethodCallExpr; +import com.github.javaparser.ast.expr.StringLiteralExpr; import com.github.javaparser.ast.stmt.*; + import java.util.function.Consumer; class TwoferWalker implements Consumer { - boolean hasClassTwofer; - boolean hasMethodTwofer; boolean hasHardCodedTestCases; boolean usesIfStatement; boolean usesConditional; @@ -21,11 +21,7 @@ class TwoferWalker implements Consumer { @Override public void accept(Node node) { - if (node instanceof ClassOrInterfaceDeclaration) { - this.hasClassTwofer = ((ClassOrInterfaceDeclaration) node).getName().toString().equals("Twofer"); - } else if (node instanceof MethodDeclaration methodDeclaration && methodDeclaration.getNameAsString().equals("twofer")) { - this.hasMethodTwofer = true; - } else if (node instanceof StringLiteralExpr && !this.hasHardCodedTestCases) { + if (node instanceof StringLiteralExpr && !this.hasHardCodedTestCases) { this.hasHardCodedTestCases = node.toString().contains("Alice") || node.toString().contains("Bob"); } else if (node instanceof ReturnStmt) { this.returnCount++;