Skip to content

Commit

Permalink
Remove checks for correct class/method name
Browse files Browse the repository at this point in the history
  • Loading branch information
sanderploegsma committed Jan 22, 2024
1 parent e035a50 commit 3f86eee
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 48 deletions.
10 changes: 0 additions & 10 deletions src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,6 @@ public void analyze(List<CompilationUnit> 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;
Expand Down
29 changes: 6 additions & 23 deletions src/main/java/analyzer/exercises/hamming/HammingWalker.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -10,37 +8,32 @@
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;
import java.util.Set;
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<ClassOrInterfaceDeclaration> {
private ClassOrInterfaceDeclaration hammingClass;
private List<ConstructorDeclaration> constructors = ImmutableList.of();
private ConstructorDeclaration constructor;
private ListMultimap<String, MethodDeclaration> methods = ImmutableListMultimap.of();
private Set<String> methodsCalledByConstructor = new HashSet<>();
private final Set<String> methodsCalledByConstructor = new HashSet<>();
private boolean constructorHasIfStatements;
private boolean constructorThrowsIllegalArgumentDirectly;
private boolean constructorMayCalculateDistanceDirectly;
private MethodDeclaration getHammingDistanceMethod;
private Set<String> methodsCalledByGetHammingDistance = new HashSet<>();
private final Set<String> methodsCalledByGetHammingDistance = new HashSet<>();
private boolean getHammingDistanceMayCalculateDistanceDirectly;

@Override
Expand Down Expand Up @@ -128,8 +121,6 @@ private Optional<MethodDeclaration> findGetHammingDistanceMethod() {
}

private void walkGetHammingDistanceMethod(MethodDeclaration getHammingDistanceMethod) {
this.getHammingDistanceMethod = getHammingDistanceMethod;

getHammingDistanceMethod.getBody().ifPresent(this::walkGetHammingDistanceMethod);
}

Expand Down Expand Up @@ -178,14 +169,6 @@ private Stream<String> getMethodsCalledBy(BlockStmt body) {
.flatMap(this::getMethodCallNames);
}

public boolean hasHammingClass() {
return hammingClass != null;
}

public boolean hasGetHammingDistanceMethod() {
return getHammingDistanceMethod != null;
}

public boolean hasConstructor() {
return constructor != null;
}
Expand Down
6 changes: 1 addition & 5 deletions src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,7 @@ public void analyze(List<CompilationUnit> 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?
Expand Down
16 changes: 6 additions & 10 deletions src/main/java/analyzer/exercises/twofer/TwoferWalker.java
Original file line number Diff line number Diff line change
@@ -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<Node> {
boolean hasClassTwofer;
boolean hasMethodTwofer;
boolean hasHardCodedTestCases;
boolean usesIfStatement;
boolean usesConditional;
Expand All @@ -21,11 +21,7 @@ class TwoferWalker implements Consumer<Node> {

@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++;
Expand Down

0 comments on commit 3f86eee

Please sign in to comment.