Skip to content

Commit be1e45a

Browse files
added check on parameter types
1 parent 2b00332 commit be1e45a

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

src/main/java/analyzer/exercises/wizardsandwarriors2/WizardsAndWarriors2Analyzer.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import analyzer.comments.ExemplarSolution;
77
import analyzer.comments.PreferStringConcatenation;
88
import com.github.javaparser.ast.body.MethodDeclaration;
9+
import com.github.javaparser.ast.body.Parameter;
910
import com.github.javaparser.ast.expr.MethodCallExpr;
1011
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
1112

@@ -22,6 +23,9 @@ public class WizardsAndWarriors2Analyzer extends VoidVisitorAdapter<OutputCollec
2223
private static final String GAME_MASTER = "GameMaster";
2324
private static final String DESCRIBE = "describe";
2425
private static final String FORMAT = "format";
26+
private static final String DESTINATION = "Destination";
27+
private static final String TRAVEL_METHOD = "TravelMethod";
28+
private static final String CHARACTER = "Character";
2529

2630
@Override
2731
public void analyze(Solution solution, OutputCollector output) {
@@ -42,39 +46,33 @@ public void visit(MethodDeclaration node, OutputCollector output) {
4246
return;
4347
}
4448

45-
if(node.getParameters().size() == 2 && !reuseMethod(node)) {
46-
49+
if(node.getParameters().size() == 2 && !reuseMethod(node, 2)) {
4750
output.addComment(new ReuseCodeHardcodedTwoParameters());
48-
4951
}
5052

51-
if(node.getParameters().size() == 3 && !reuseMethod(node)) {
52-
53+
if(node.getParameters().size() == 3 && !reuseMethod(node, 3)) {
5354
output.addComment(new ReuseCodeHardcodedThreeParameters());
54-
5555
}
5656

5757
if(useStringFormat(node)) {
58-
5958
output.addComment(new PreferStringConcatenation());
60-
6159
}
6260

6361
super.visit(node, output);
6462
}
6563

66-
private static boolean reuseMethod(MethodDeclaration node) {
67-
68-
int paramCount = node.getParameters().size();
64+
private static boolean reuseMethod(MethodDeclaration node, int paramCount) {
6965

66+
List<String> params = node.getParameters().stream().map(Parameter::getTypeAsString).toList();
7067
List<MethodCallExpr> describeCalls = node.findAll(MethodCallExpr.class).stream()
7168
.filter(m -> m.getNameAsString().equals(DESCRIBE))
7269
.toList();
7370

74-
if (paramCount == 2) {
71+
if (paramCount == 2 && params.contains(DESTINATION) && params.contains(CHARACTER)) {
7572
return describeCalls.size() == 1 || describeCalls.size() == 3;
7673
}
77-
if (paramCount == 3) {
74+
75+
if (paramCount == 3 && params.contains(DESTINATION) && params.contains(TRAVEL_METHOD) && params.contains(CHARACTER)) {
7876
return describeCalls.size() == 3;
7977
}
8078

0 commit comments

Comments
 (0)