10: Refactor Java plugins to use lambdas instead of visitors in CompilationUnit

This commit is contained in:
Bartłomiej Pluta
2019-04-05 19:49:00 +02:00
parent c1c8b7e7ee
commit c82523246b
2 changed files with 7 additions and 26 deletions

View File

@@ -6,7 +6,6 @@ import com.bartek.esa.core.xml.XmlHelper;
import com.bartek.esa.file.matcher.GlobMatcher;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.expr.MethodCallExpr;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
import javax.inject.Inject;
@@ -19,14 +18,8 @@ public class LoggingPlugin extends JavaPlugin {
@Override
public void run(CompilationUnit compilationUnit) {
compilationUnit.accept(new VoidVisitorAdapter<Void>() {
@Override
public void visit(MethodCallExpr methodCall, Void arg) {
if (methodCall.getName().getIdentifier().matches("v|d|i|w|e|wtf")) {
addIssue(Severity.INFO, getLineNumberFromExpression(methodCall), methodCall.toString());
}
super.visit(methodCall, arg);
}
}, null);
compilationUnit.findAll(MethodCallExpr.class).stream()
.filter(expr -> expr.getName().getIdentifier().matches("v|d|i|w|e|wtf"))
.forEach(expr -> addIssue(Severity.INFO, getLineNumberFromExpression(expr), expr.toString()));
}
}

View File

@@ -5,10 +5,7 @@ import com.bartek.esa.core.model.enumeration.Severity;
import com.bartek.esa.core.xml.XmlHelper;
import com.bartek.esa.file.matcher.GlobMatcher;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.expr.ObjectCreationExpr;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
import javax.inject.Inject;
@@ -21,18 +18,9 @@ public class SecureRandomPlugin extends JavaPlugin {
@Override
public void run(CompilationUnit compilationUnit) {
compilationUnit.accept(new VoidVisitorAdapter<Void>() {
@Override
public void visit(ObjectCreationExpr objectCreation, Void arg) {
String identifier = objectCreation.getType().getName().getIdentifier();
NodeList<Expression> arguments = objectCreation.getArguments();
if(identifier.equals("SecureRandom") && arguments.isNonEmpty()) {
addIssue(Severity.VULNERABILITY, getLineNumberFromExpression(objectCreation), objectCreation.toString());
}
super.visit(objectCreation, arg);
}
}, null);
compilationUnit.findAll(ObjectCreationExpr.class).stream()
.filter(expr -> expr.getType().getName().getIdentifier().equals("SecureRandom"))
.filter(expr -> expr.getArguments().isNonEmpty())
.forEach(expr -> addIssue(Severity.VULNERABILITY, getLineNumberFromExpression(expr), expr.toString()));
}
}