package org.projectusus.core.proportions.rawdata.jdtdriver.trainwreck;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jdt.core.dom.Initializer;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.MethodInvocation;
import org.projectusus.core.metrics.MetricsCollector;
public class TrainWreckInspector extends MetricsCollector {
private Map<String, String> map = new HashMap<String, String>();
private String currentName;
private StringBuilder visitedNodes;
public Map<String, String> getMap() {
return map;
}
@Override
public boolean visit( MethodDeclaration node ) {
init( node.getName().toString() );
return true;
}
@Override
public boolean visit( Initializer node ) {
init( "initializer" );
return true;
}
@Override
public void endVisit( MethodDeclaration node ) {
map.put( currentName, visitedNodes.toString() );
}
@Override
public void endVisit( Initializer node ) {
map.put( currentName, visitedNodes.toString() );
}
@Override
public boolean visit( MethodInvocation node ) {
visitedNodes.append( "MI " );
visitedNodes.append( node.getName().toString() );
visitedNodes.append( " " );
if( node.getExpression() instanceof MethodInvocation ) {
visitedNodes.append( "on " );
} else {
visitedNodes.append( "# " );
}
return true;
}
private void init( String name ) {
currentName = name;
visitedNodes = new StringBuilder();
}
}