/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.uff.ic.oceano.core.tools.metrics.extractors.java;
import br.uff.ic.oceano.core.tools.metrics.MetricException;
import br.uff.ic.oceano.core.model.MetricValue;
import br.uff.ic.oceano.core.model.Revision;
import br.uff.ic.oceano.core.tools.metrics.extractors.AbstractMetricExtractor;
import gr.spinellis.ckjm.ClassMetrics;
import gr.spinellis.ckjm.ClassMetricsContainer;
import gr.spinellis.ckjm.ClassVisitor;
import java.io.IOException;
import org.apache.bcel.classfile.ClassParser;
import org.apache.bcel.classfile.JavaClass;
/**
* refactored by dheraclio
*
* @author wallace
*/
public class LackOfCohesionOfMethodsExtractorJava extends AbstractMetricExtractor {
public LackOfCohesionOfMethodsExtractorJava() {
}
public MetricValue extractMetric(Revision revision) throws MetricException {
return extractMetricWithMetricService(revision);
}
public MetricValue extractMetric(Revision revision, String path) throws MetricException {
try {
JavaClass jc = new ClassParser(path).parse();
ClassMetricsContainer cm = new ClassMetricsContainer();
ClassVisitor visitor = new ClassVisitor(jc, cm);
visitor.start();
visitor.end();
ClassMetrics cmMetrics = cm.getMetrics(jc.getClassName());
return createMetricValue(revision, cmMetrics.getLcom());
} catch (IOException e) {
throw new MetricException(e);
}
}
}