Skip to content

Commit

Permalink
Suggest to not use conditional logic
Browse files Browse the repository at this point in the history
  • Loading branch information
sanderploegsma committed Jan 20, 2024
1 parent 4632089 commit 59dc03f
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 1 deletion.
19 changes: 19 additions & 0 deletions src/main/java/analyzer/exercises/leap/AvoidConditionalLogic.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package analyzer.exercises.leap;

import analyzer.Comment;
import analyzer.CommentType;

/**
* @see <a href="https://github.com/exercism/website-copy/blob/main/analyzer-comments/java/leap/avoid_conditional_logic.md">Markdown Template</a>
*/
class AvoidConditionalLogic extends Comment {
@Override
public String getKey() {
return "java.leap.avoid_conditional_logic";
}

@Override
public CommentType getType() {
return CommentType.ACTIONABLE;
}
}
14 changes: 14 additions & 0 deletions src/main/java/analyzer/exercises/leap/LeapAnalyzer.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
import analyzer.comments.AvoidHardCodedTestCases;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.ImportDeclaration;
import com.github.javaparser.ast.expr.ConditionalExpr;
import com.github.javaparser.ast.expr.IntegerLiteralExpr;
import com.github.javaparser.ast.stmt.IfStmt;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;

import java.util.HashSet;
Expand Down Expand Up @@ -61,4 +63,16 @@ public void visit(IntegerLiteralExpr n, Void arg) {

super.visit(n, arg);
}

@Override
public void visit(IfStmt n, Void arg) {
this.analysis.addComment(new AvoidConditionalLogic());
super.visit(n, arg);
}

@Override
public void visit(ConditionalExpr n, Void arg) {
this.analysis.addComment(new AvoidConditionalLogic());
super.visit(n, arg);
}
}
4 changes: 3 additions & 1 deletion src/test/java/analyzer/exercises/leap/LeapAnalyzerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ private static Stream<Arguments> testCases() {
Arguments.of("Optimal.java", new Comment[0]),
Arguments.of("UsesJavaTime.java", new Comment[]{new NoBuiltInMethods()}),
Arguments.of("UsesGregorianCalendar.java", new Comment[]{new NoBuiltInMethods()}),
Arguments.of("HardCodedTestCases.java", new Comment[]{new AvoidHardCodedTestCases()})
Arguments.of("HardCodedTestCases.java", new Comment[]{new AvoidHardCodedTestCases()}),
Arguments.of("UsesIfStatements.java", new Comment[]{new AvoidConditionalLogic()}),
Arguments.of("UsesTernary.java", new Comment[]{new AvoidConditionalLogic()})
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class Leap {
boolean isLeapYear(int year) {
if (year % 400 == 0) return true;
if (year % 100 == 0) return false;
if (year % 4 == 0) return true;
return false;
}
}
5 changes: 5 additions & 0 deletions src/test/resources/analyzer/exercises/leap/UsesTernary.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class Leap {
boolean isLeapYear(int year) {
return (year % 400 == 0) ? true : (year % 100 == 0) ? false : (year % 4 == 0) ? true : false;
}
}

0 comments on commit 59dc03f

Please sign in to comment.