-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Try to fix workshop by adding mockito check
- Loading branch information
Showing
4 changed files
with
121 additions
and
125 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
90 changes: 45 additions & 45 deletions
90
workshop/src/main/java/tech/picnic/errorprone/workshop/bugpatterns/DeleteEmptyMethod.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,45 +1,45 @@ | ||
package tech.picnic.errorprone.workshop.bugpatterns; | ||
|
||
import static com.google.errorprone.BugPattern.SeverityLevel.WARNING; | ||
import static com.google.errorprone.BugPattern.StandardTags.SIMPLIFICATION; | ||
import static com.google.errorprone.matchers.ChildMultiMatcher.MatchType.AT_LEAST_ONE; | ||
import static com.google.errorprone.matchers.Matchers.annotations; | ||
import static com.google.errorprone.matchers.Matchers.anyOf; | ||
import static com.google.errorprone.matchers.Matchers.isType; | ||
|
||
import com.google.auto.service.AutoService; | ||
import com.google.errorprone.BugPattern; | ||
import com.google.errorprone.VisitorState; | ||
import com.google.errorprone.bugpatterns.BugChecker; | ||
import com.google.errorprone.bugpatterns.BugChecker.MethodTreeMatcher; | ||
import com.google.errorprone.matchers.Description; | ||
import com.google.errorprone.matchers.Matcher; | ||
import com.sun.source.tree.MethodTree; | ||
import com.sun.source.tree.Tree; | ||
|
||
/** A {@link BugChecker} that flags empty methods that seemingly can simply be deleted. */ | ||
@AutoService(BugChecker.class) | ||
@BugPattern( | ||
summary = "Empty method can likely be deleted", | ||
severity = WARNING, | ||
tags = SIMPLIFICATION) | ||
@SuppressWarnings("UnusedVariable" /* This check is yet to be implemented as part of the demo */) | ||
public final class DeleteEmptyMethod extends BugChecker implements MethodTreeMatcher { | ||
private static final long serialVersionUID = 1L; | ||
private static final Matcher<Tree> PERMITTED_ANNOTATION = | ||
annotations(AT_LEAST_ONE, anyOf(isType("java.lang.Override"))); | ||
|
||
/** Instantiates a new {@link DeleteEmptyMethod} instance. */ | ||
public DeleteEmptyMethod() {} | ||
|
||
@Override | ||
public Description matchMethod(MethodTree tree, VisitorState state) { | ||
// XXX: Part 1: Ensure that we only delete methods that contain no statements. | ||
// XXX: Part 2: Don't delete methods that are annotated with `@Override`. | ||
|
||
return Description.NO_MATCH; | ||
} | ||
} | ||
// XXX: Add at least two more of these. | ||
// SLF4J; fixen van de juiste class reference; en of private static final is. Eventueel de naam nog | ||
// checken dat die LOG is. | ||
//package tech.picnic.errorprone.workshop.bugpatterns; | ||
// | ||
//import static com.google.errorprone.BugPattern.SeverityLevel.WARNING; | ||
//import static com.google.errorprone.BugPattern.StandardTags.SIMPLIFICATION; | ||
//import static com.google.errorprone.matchers.ChildMultiMatcher.MatchType.AT_LEAST_ONE; | ||
//import static com.google.errorprone.matchers.Matchers.annotations; | ||
//import static com.google.errorprone.matchers.Matchers.anyOf; | ||
//import static com.google.errorprone.matchers.Matchers.isType; | ||
// | ||
//import com.google.auto.service.AutoService; | ||
//import com.google.errorprone.BugPattern; | ||
//import com.google.errorprone.VisitorState; | ||
//import com.google.errorprone.bugpatterns.BugChecker; | ||
//import com.google.errorprone.bugpatterns.BugChecker.MethodTreeMatcher; | ||
//import com.google.errorprone.matchers.Description; | ||
//import com.google.errorprone.matchers.Matcher; | ||
//import com.sun.source.tree.MethodTree; | ||
//import com.sun.source.tree.Tree; | ||
// | ||
///** A {@link BugChecker} that flags empty methods that seemingly can simply be deleted. */ | ||
//@AutoService(BugChecker.class) | ||
//@BugPattern( | ||
// summary = "Empty method can likely be deleted", | ||
// severity = WARNING, | ||
// tags = SIMPLIFICATION) | ||
//@SuppressWarnings("UnusedVariable" /* This check is yet to be implemented as part of the demo */) | ||
//public final class DeleteEmptyMethod extends BugChecker implements MethodTreeMatcher { | ||
// private static final long serialVersionUID = 1L; | ||
// private static final Matcher<Tree> PERMITTED_ANNOTATION = | ||
// annotations(AT_LEAST_ONE, anyOf(isType("java.lang.Override"))); | ||
// | ||
// /** Instantiates a new {@link DeleteEmptyMethod} instance. */ | ||
// public DeleteEmptyMethod() {} | ||
// | ||
// @Override | ||
// public Description matchMethod(MethodTree tree, VisitorState state) { | ||
// // XXX: Part 1: Ensure that we only delete methods that contain no statements. | ||
// // XXX: Part 2: Don't delete methods that are annotated with `@Override`. | ||
// | ||
// return Description.NO_MATCH; | ||
// } | ||
//} | ||
//// XXX: Add at least two more of these. | ||
//// SLF4J; fixen van de juiste class reference; en of private static final is. Eventueel de naam nog | ||
//// checken dat die LOG is. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
146 changes: 73 additions & 73 deletions
146
...shop/src/test/java/tech/picnic/errorprone/workshop/bugpatterns/DeleteEmptyMethodTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,73 +1,73 @@ | ||
package tech.picnic.errorprone.workshop.bugpatterns; | ||
|
||
import com.google.errorprone.BugCheckerRefactoringTestHelper; | ||
import com.google.errorprone.BugCheckerRefactoringTestHelper.TestMode; | ||
import com.google.errorprone.CompilationTestHelper; | ||
import org.junit.jupiter.api.Disabled; | ||
import org.junit.jupiter.api.Test; | ||
|
||
final class DeleteEmptyMethodTest { | ||
@Disabled("Implement the logic in `DeleteEmptyMethod.java`") | ||
@Test | ||
void identification() { | ||
CompilationTestHelper.newInstance(DeleteEmptyMethod.class, getClass()) | ||
.addSourceLines( | ||
"A.java", | ||
"class A {", | ||
" Object m1() {", | ||
" return null;", | ||
" }", | ||
"", | ||
" void m2() {", | ||
" System.out.println(42);", | ||
" }", | ||
"", | ||
" // BUG: Diagnostic contains:", | ||
" static void m3() {}", | ||
"", | ||
" interface F {", | ||
" void fun();", | ||
" }", | ||
"}") | ||
.addSourceLines( | ||
"B.java", | ||
"final class B implements A.F {", | ||
" @Override", | ||
" public void fun() {}", | ||
"", | ||
" /** Javadoc. */", | ||
" // BUG: Diagnostic contains:", | ||
" void m4() {}", | ||
"", | ||
" void m5() {", | ||
" // Single-line comment.", | ||
" }", | ||
"}") | ||
.doTest(); | ||
} | ||
|
||
@Disabled("Implement the logic in `DeleteEmptyMethod.java`") | ||
@Test | ||
void replacement() { | ||
BugCheckerRefactoringTestHelper.newInstance(DeleteEmptyMethod.class, getClass()) | ||
.addInputLines( | ||
"A.java", | ||
"final class A {", | ||
" void instanceMethod() {}", | ||
"", | ||
" static void staticMethod() {}", | ||
"", | ||
" static void staticMethodWithComment() {", | ||
" /* Foo. */", | ||
" }", | ||
"}") | ||
.addOutputLines( | ||
"A.java", | ||
"final class A {", | ||
" static void staticMethodWithComment() {", | ||
" /* Foo. */", | ||
" }", | ||
"}") | ||
.doTest(TestMode.TEXT_MATCH); | ||
} | ||
} | ||
//package tech.picnic.errorprone.workshop.bugpatterns; | ||
// | ||
//import com.google.errorprone.BugCheckerRefactoringTestHelper; | ||
//import com.google.errorprone.BugCheckerRefactoringTestHelper.TestMode; | ||
//import com.google.errorprone.CompilationTestHelper; | ||
//import org.junit.jupiter.api.Disabled; | ||
//import org.junit.jupiter.api.Test; | ||
// | ||
//final class DeleteEmptyMethodTest { | ||
// @Disabled("Implement the logic in `DeleteEmptyMethod.java`") | ||
// @Test | ||
// void identification() { | ||
// CompilationTestHelper.newInstance(DeleteEmptyMethod.class, getClass()) | ||
// .addSourceLines( | ||
// "A.java", | ||
// "class A {", | ||
// " Object m1() {", | ||
// " return null;", | ||
// " }", | ||
// "", | ||
// " void m2() {", | ||
// " System.out.println(42);", | ||
// " }", | ||
// "", | ||
// " // BUG: Diagnostic contains:", | ||
// " static void m3() {}", | ||
// "", | ||
// " interface F {", | ||
// " void fun();", | ||
// " }", | ||
// "}") | ||
// .addSourceLines( | ||
// "B.java", | ||
// "final class B implements A.F {", | ||
// " @Override", | ||
// " public void fun() {}", | ||
// "", | ||
// " /** Javadoc. */", | ||
// " // BUG: Diagnostic contains:", | ||
// " void m4() {}", | ||
// "", | ||
// " void m5() {", | ||
// " // Single-line comment.", | ||
// " }", | ||
// "}") | ||
// .doTest(); | ||
// } | ||
// | ||
// @Disabled("Implement the logic in `DeleteEmptyMethod.java`") | ||
// @Test | ||
// void replacement() { | ||
// BugCheckerRefactoringTestHelper.newInstance(DeleteEmptyMethod.class, getClass()) | ||
// .addInputLines( | ||
// "A.java", | ||
// "final class A {", | ||
// " void instanceMethod() {}", | ||
// "", | ||
// " static void staticMethod() {}", | ||
// "", | ||
// " static void staticMethodWithComment() {", | ||
// " /* Foo. */", | ||
// " }", | ||
// "}") | ||
// .addOutputLines( | ||
// "A.java", | ||
// "final class A {", | ||
// " static void staticMethodWithComment() {", | ||
// " /* Foo. */", | ||
// " }", | ||
// "}") | ||
// .doTest(TestMode.TEXT_MATCH); | ||
// } | ||
//} |