package org.projectusus.wip.metrics;
import org.eclipse.jdt.core.dom.BooleanLiteral;
import org.eclipse.jdt.core.dom.Initializer;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.MethodInvocation;
import org.eclipse.jdt.core.dom.NullLiteral;
import org.projectusus.core.basis.MetricsResults;
import org.projectusus.core.metrics.MetricsCollector;
import org.projectusus.metrics.Counter;
public class ConstantParametersCollector extends MetricsCollector {
private Counter constantParametersCount = new Counter();
@Override
public boolean visit( MethodDeclaration node ) {
init( node );
return true;
}
@Override
public boolean visit( Initializer node ) {
init( node );
return true;
}
@Override
public void endVisit( MethodDeclaration node ) {
commit( node );
}
@Override
public void endVisit( Initializer node ) {
commit( node );
}
@Override
public boolean visit( MethodInvocation node ) {
for( Object argument : node.arguments() ) {
// should the method have more than 1 arguments?
if( argument instanceof BooleanLiteral || argument instanceof NullLiteral )
foundConstantParameter();
}
return true;
}
public void foundConstantParameter() {
constantParametersCount.increaseLastCountBy( 1 );
}
public void init( @SuppressWarnings( "unused" ) MethodDeclaration node ) {
constantParametersCount.startNewCount();
}
public void init( @SuppressWarnings( "unused" ) Initializer node ) {
constantParametersCount.startNewCount();
}
public void commit( MethodDeclaration node ) {
int count = constantParametersCount.getAndClearCount();
getMetricsWriter().putData( getFile(), node, MetricsResults.CP, count );
}
public void commit( Initializer node ) {
int count = constantParametersCount.getAndClearCount();
getMetricsWriter().putData( getFile(), node, MetricsResults.CP, count );
}
}