Skip to content

Commit

Permalink
Simplify some code, forgot to push
Browse files Browse the repository at this point in the history
  • Loading branch information
rickie committed Apr 19, 2024
1 parent ccc6611 commit 72a6871
Showing 1 changed file with 20 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,10 @@
import com.sun.source.tree.Tree;
import com.sun.source.tree.Tree.Kind;
import com.sun.source.tree.VariableTree;
import com.sun.source.util.TreeScanner;
import java.util.regex.Pattern;
import javax.inject.Inject;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.Name;
import org.jspecify.annotations.Nullable;
import tech.picnic.errorprone.utils.SourceCode;

/**
Expand Down Expand Up @@ -84,12 +82,12 @@ public Description matchVariable(VariableTree tree, VisitorState state) {
}

SuggestedFix.Builder fixBuilder = SuggestedFix.builder();

if (clazz.getKind() != Kind.INTERFACE) {
suggestCanonicalModifiers(tree, fixBuilder, state);
}
canonicalizeLoggerVariableName(tree, fixBuilder, state);
updateGetLoggerArgument(tree, clazz.getSimpleName(), fixBuilder, state);
updateGetLoggerArgument(
(MethodInvocationTree) tree.getInitializer(), clazz.getSimpleName(), fixBuilder, state);

return fixBuilder.isEmpty() ? Description.NO_MATCH : describeMatch(tree, fixBuilder.build());
}
Expand All @@ -102,36 +100,26 @@ private void canonicalizeLoggerVariableName(
}

private static void updateGetLoggerArgument(
VariableTree tree,
Name enclosingElementName,
MethodInvocationTree tree,
Name className,
SuggestedFix.Builder fixBuilder,
VisitorState state) {
new TreeScanner<@Nullable Void, Name>() {
@Override
public @Nullable Void visitMethodInvocation(
MethodInvocationTree tree, Name enclosingElementName) {
if (GET_LOGGER_METHOD.matches(tree, state)) {
ExpressionTree arg = Iterables.getOnlyElement(tree.getArguments());
String argumentName = SourceCode.treeToString(arg, state);

java.util.regex.Matcher matcher;
if (arg.getKind() == Kind.STRING_LITERAL) {
matcher = STRING_LITERAL_ARGUMENT_PATTERN.matcher(argumentName);
} else {
matcher = CLASS_ARGUMENT_PATTERN.matcher(argumentName);
}

checkArgument(matcher.matches(), "Invalid argument name.");
String argumentClassName = matcher.group(1);
if (!enclosingElementName.contentEquals(argumentClassName)) {
fixBuilder.merge(
SuggestedFix.replace(
arg, argumentName.replace(argumentClassName, enclosingElementName)));
}
}
return null;
}
}.scan(tree, enclosingElementName);
ExpressionTree arg = Iterables.getOnlyElement(tree.getArguments());
String argumentName = SourceCode.treeToString(arg, state);

java.util.regex.Matcher matcher;
if (arg.getKind() == Kind.STRING_LITERAL) {
matcher = STRING_LITERAL_ARGUMENT_PATTERN.matcher(argumentName);
} else {
matcher = CLASS_ARGUMENT_PATTERN.matcher(argumentName);
}

checkArgument(matcher.matches(), "Invalid argument name.");

Check warning on line 117 in error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/Slf4jLogDeclaration.java

View workflow job for this annotation

GitHub Actions / pitest

A change can be made to line 117 without causing a test to fail

removed call to com/google/common/base/Preconditions::checkArgument (covered by 3 tests VoidMethodCallMutator)
String argumentClassName = matcher.group(1);
if (!className.contentEquals(argumentClassName)) {
fixBuilder.merge(
SuggestedFix.replace(arg, argumentName.replace(argumentClassName, className)));
}
}

private static void suggestCanonicalModifiers(
Expand Down

0 comments on commit 72a6871

Please sign in to comment.