@Override public Object visit(ASTMethodDeclaration node, Object data) { this.rc = (RuleContext) data; /* * IDataFlowNode n1 = node.getDataFlowNode(); List f = n1.getFlow(); for * (Iterator i = f.iterator(); i.hasNext();) { DataFlowNode dfan = * (DataFlowNode)i.next(); System.out.println(dfan); List va = * dfan.getVariableAccess(); for (Iterator j = va.iterator(); * j.hasNext();) { VariableAccess o = (VariableAccess)j.next(); * System.out.println(o); } } */ DAAPathFinder a = new DAAPathFinder(node.getDataFlowNode().getFlow().get(0), this); a.run(); return data; }
@Override public Object visit(ASTMethodDeclaration methodDeclaration, Object data) { rc = (RuleContext) data; daaRuleViolations = new ArrayList<>(); final DataFlowNode node = methodDeclaration.getDataFlowNode().getFlow().get(0); final DAAPathFinder pathFinder = new DAAPathFinder(node, this, getProperty(MAX_PATH_DESCRIPTOR)); pathFinder.run(); super.visit(methodDeclaration, data); return data; }
@Override public Object visit(ASTMethodDeclaration node, Object data) { this.rc = (RuleContext) data; /* * IDataFlowNode n1 = node.getDataFlowNode(); List f = n1.getFlow(); for * (Iterator i = f.iterator(); i.hasNext();) { DataFlowNode dfan = * (DataFlowNode)i.next(); System.out.println(dfan); List va = * dfan.getVariableAccess(); for (Iterator j = va.iterator(); * j.hasNext();) { VariableAccess o = (VariableAccess)j.next(); * System.out.println(o); } } */ DAAPathFinder a = new DAAPathFinder(node.getDataFlowNode().getFlow().get(0), this); a.run(); return data; }
@Override public Object visit(ASTMethodDeclaration methodDeclaration, Object data) { rc = (RuleContext) data; daaRuleViolations = new ArrayList<>(); final DataFlowNode node = methodDeclaration.getDataFlowNode().getFlow().get(0); final DAAPathFinder pathFinder = new DAAPathFinder(node, this, getProperty(MAX_PATH_DESCRIPTOR)); pathFinder.run(); super.visit(methodDeclaration, data); return data; }
private void handleMethod(ASTMethodDeclaration methodDeclaration, Object data) { DataFlowNode dataFlowNode = methodDeclaration.getDataFlowNode(); if (dataFlowNode == null || dataFlowNode.getFlow() == null) { return; } // records of violations,lock block excepted Stack<Node> stack = new Stack<>(); Set<String> localSimpleDateFormatNames = new HashSet<>(); for (DataFlowNode flowNode : dataFlowNode.getFlow()) { handleFlowNode(stack, localSimpleDateFormatNames, flowNode); } while (!stack.isEmpty()) { Node node = stack.pop(); if (node instanceof ASTPrimaryExpression) { addViolationWithMessage(data, node, "java.concurrent.AvoidCallStaticSimpleDateFormatRule.violation.msg", new Object[] {getExpressName((ASTPrimaryExpression)node)}); } } }