metric-providers/org.ossmeter.metricprovider.rascal/schema/org.ossmeter.metricprovider.rascal.metric.exsd Diff Switch to side-by-side view

metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/RealMeasurement.java
File was removed.
metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/history/model/HistoricRascalMetrics.java Diff Switch to side-by-side view

metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/rascalmetric.ecore Diff Switch to side-by-side view

metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/rascalmetric.emf Diff Switch to side-by-side view

metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/RascalHistoricMetricProvider.java Diff Switch to side-by-side view

metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/RascalMetricProviderManager.java Diff Switch to side-by-side view

metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/RascalTransientMetricProvider.java Diff Switch to side-by-side view

metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/BooleanMeasurement.java to metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/RascalMetrics.java
--- a/metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/BooleanMeasurement.java +++ b/metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/RascalMetrics.java @@ -1,29 +1,21 @@ -package org.ossmeter.metricprovider.rascal.trans.model; +package org.ossmeter.metricprovider.rascal; -import com.mongodb.*; -import java.util.*; -import com.googlecode.pongo.runtime.*; +import org.eclipse.imp.pdb.facts.IValue; +import org.ossmeter.platform.Date; +import org.rascalmpl.interpreter.Evaluator; +import com.mongodb.DB; -public class BooleanMeasurement extends Measurement { +public abstract class RascalMetrics { + protected String module; + protected String function; + public abstract void adapt(DB db); + public abstract void measure(Evaluator eval, IValue file, String revision, String fileURL, Date today); + public abstract void sync(); - public BooleanMeasurement() { - super(); + public String getModule() { + return this.module; } - - public boolean getValue() { - return parseBoolean(dbObject.get("value")+"", false); - } - - public BooleanMeasurement setValue(boolean value) { - dbObject.put("value", value + ""); - notifyChanged(); - return this; - } - - - - -}+}
metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/IntegerMeasurement.java to metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/RascalMetric.java
--- a/metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/IntegerMeasurement.java +++ b/metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/RascalMetric.java @@ -1,29 +1,22 @@ package org.ossmeter.metricprovider.rascal.trans.model; +import com.googlecode.pongo.runtime.*; import com.mongodb.*; -import java.util.*; -import com.googlecode.pongo.runtime.*; - -public class IntegerMeasurement extends Measurement { +public class RascalMetric extends PongoDB { + public RascalMetric() {} - - public IntegerMeasurement() { - super(); + public RascalMetric(DB db) { + setDb(db); } - - public long getValue() { - return parseLong(dbObject.get("value")+"", 0); - } - - public IntegerMeasurement setValue(long value) { - dbObject.put("value", value + ""); - notifyChanged(); - return this; - } + + @Override + public void setDb(DB db) { + super.setDb(db); + } }
metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/Measurement.java to metric-providers/org.ossmeter.metricprovider.rascal/modules/Manager.rsc
--- a/metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/Measurement.java +++ b/metric-providers/org.ossmeter.metricprovider.rascal/modules/Manager.rsc @@ -1,38 +1,28 @@ -package org.ossmeter.metricprovider.rascal.trans.model; +module Manager -import com.mongodb.*; -import java.util.*; -import com.googlecode.pongo.runtime.*; +import util::ShellExec; +import List; +import Set; +import IO; +import lang::java::m3::Core; +import util::Math; +import LOC; +import String; +str checkOutRepository(str repositoryURL, int revision, loc localStorage) { + str result = readEntireStream(createProcess("svn", + ["co", "-r", toString(revision), "--non-interactive", "--trust-server-cert", repositoryURL], localStorage + )); + return result; +} -public class Measurement extends Pongo { - - - - public Measurement() { - super(); - } - - public String getUri() { - return parseString(dbObject.get("uri")+"", ""); - } - - public Measurement setUri(String uri) { - dbObject.put("uri", uri + ""); - notifyChanged(); - return this; - } - public String getMetric() { - return parseString(dbObject.get("metric")+"", ""); - } - - public Measurement setMetric(String metric) { - dbObject.put("metric", metric + ""); - notifyChanged(); - return this; - } - - - - -}+M3 createFileM3(loc file) { + if (file.extension == "java") { + return createM3FromFile(file); + } + return m3(|unknown:///|); +} + +bool isValid(M3 fileM3) { + return !isEmpty(fileM3); +}
metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/MeasurementCollection.java to metric-providers/org.ossmeter.metricprovider.rascal/modules/LOC.rsc
--- a/metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/MeasurementCollection.java +++ b/metric-providers/org.ossmeter.metricprovider.rascal/modules/LOC.rsc @@ -1,65 +1,104 @@ -package org.ossmeter.metricprovider.rascal.trans.model; +module LOC -import com.googlecode.pongo.runtime.*; -import java.util.*; -import com.mongodb.*; +import lang::java::m3::Core; +import analysis::graphs::Graph; +import IO; +import List; +import String; +import Set; -import org.ossmeter.metricprovider.rascal.trans.model.Measurement; +alias locResult = tuple[int total, int comment, int empty, int source]; -public class MeasurementCollection extends PongoCollection<Measurement> { - - public MeasurementCollection(DBCollection dbCollection) { - super(dbCollection); - createIndex("uri"); - createIndex("metric"); - } - - public Iterable<Measurement> findById(String id) { - return new IteratorIterable<Measurement>(new PongoCursorIterator<Measurement>(this, dbCollection.find(new BasicDBObject("_id", id)))); - } - - public Iterable<Measurement> findByUri(String q) { - return new IteratorIterable<Measurement>(new PongoCursorIterator<Measurement>(this, dbCollection.find(new BasicDBObject("uri", q + "")))); - } - - public Measurement findOneByUri(String q) { - Measurement measurement = (Measurement) PongoFactory.getInstance().createPongo(dbCollection.findOne(new BasicDBObject("uri", q + ""))); - if (measurement != null) { - measurement.setPongoCollection(this); - } - return measurement; - } +int countCommentedLoc(M3 projectModel, loc cu) + = (0 | it + (doc.end.line - doc.begin.line + 1 - checkForSourceLines(doc)) | doc <- projectModel@documentation[cu]); - public long countByUri(String q) { - return dbCollection.count(new BasicDBObject("uri", q + "")); - } - public Iterable<Measurement> findByMetric(String q) { - return new IteratorIterable<Measurement>(new PongoCursorIterator<Measurement>(this, dbCollection.find(new BasicDBObject("metric", q + "")))); - } - - public Measurement findOneByMetric(String q) { - Measurement measurement = (Measurement) PongoFactory.getInstance().createPongo(dbCollection.findOne(new BasicDBObject("metric", q + ""))); - if (measurement != null) { - measurement.setPongoCollection(this); - } - return measurement; - } +private int checkForSourceLines(loc commentLoc, str fileContents) { + str comment = substring(fileContents, commentLoc.offset, commentLoc.offset + commentLoc.length); + // We will check to see if there are any source code in the commented lines + loc commentedLines = commentLoc; + // start from start of the line + commentedLines.begin.column = 0; + // increase to the next line to cover the full line + commentedLines.end.line += 1; + // we won't take any character from the next line + commentedLines.end.column = 0; + list[str] contents = split("\n", fileContents)[commentedLines.begin.line-1..commentedLines.end.line-1]; + str commentedLinesSrc = intercalate("\n", contents); + // since we look till the start of the next line, we need to make sure we remove the extra \n from the end + if (isEmpty(last(contents))) + commentedLinesSrc = replaceLast(commentedLinesSrc, "\n" , ""); + return size(split(trim(comment), trim(commentedLinesSrc))); +} - public long countByMetric(String q) { - return dbCollection.count(new BasicDBObject("metric", q + "")); - } - - @Override - public Iterator<Measurement> iterator() { - return new PongoCursorIterator<Measurement>(this, dbCollection.find()); - } - - public void add(Measurement measurement) { - super.add(measurement); - } - - public void remove(Measurement measurement) { - super.remove(measurement); - } - -}+str removeComments(str contents, M3 fileM3) { + set[loc] compilationUnit = {src | <name, src> <- fileM3@declarations, isCompilationUnit(name)}; + assert size(compilationUnit) == 1 : "More than one compilation unit in a file???"; + loc cu = getOneFrom(compilationUnit); + list[str] listContents = split("\n", contents); + list[str] result = listContents; + for (loc commentLoc <- fileM3@documentation[cu]) { + // remove comments + result = result - slice(listContents, commentLoc.begin.line - 1, commentLoc.end.line - commentLoc.begin.line + 1); + } + return intercalate("\n", result); +} + +locResult countLoc(loc file) { + locResult result = <-1,-1,-1,-1>; + + str fileContents = readFile(file); + + result.total = size(split("\n", fileContents)); + result.comment = -1; + result.empty = -1; + result.source = result.total; + + return result; +} + +loc getCompilationUnit(M3 fileM3) { + set[loc] compilationUnit = {src | <name, src> <- fileM3@declarations, isCompilationUnit(name)}; + assert size(compilationUnit) == 1 : "More than one compilation unit in a file???"; + loc compilationUnitSrc = getOneFrom(compilationUnit); + + return compilationUnitSrc; +} + +locResult countLoc(M3 fileM3) { + locResult result = <-1,-1,-1,-1>; + + loc compilationUnitSrc = getCompilationUnit(fileM3); + + str fileContents = readFile(compilationUnitSrc); + + result.total = compilationUnitSrc.end.line; + result.comment = countCommentedLoc(fileM3, fileContents); + result.empty = countEmptyLoc(fileM3, fileContents); + result.source = result.total - result.comment - result.empty; + return result; +} + +int countTotalLoc(M3 fileM3) { + loc compilationUnit = getCompilationUnit(fileM3); + return compilationUnit.end.line; +} + +int countCommentedLoc(M3 fileM3, str fileContents) { + int result = 0; + set[loc] comments = { src | <name, src> <- fileM3@documentation, isCompilationUnit(name) }; + for (source <- comments) { + result += source.end.line - source.begin.line + 1 - checkForSourceLines(source, fileContents); + } + return result; +} + +int countEmptyLoc(M3 fileM3, str fileContents) + = (0 | it + 1 | /^\s*$/ <- split("\n", removeComments(fileContents, fileM3))); + +tuple[str language, int count] locPerLanguage(M3 fileM3) { + return <"java", countTotalLoc(fileM3)>; +} + +tuple[str language, int count] locPerLanguage(loc file) { + return <file.extension, size(readFileLines(file))>; +}
metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/RascalMetrics.java to metric-providers/org.ossmeter.metricprovider.rascal/modules/NOM.rsc
--- a/metric-providers/org.ossmeter.metricprovider.rascal/src/org/ossmeter/metricprovider/rascal/trans/model/RascalMetrics.java +++ b/metric-providers/org.ossmeter.metricprovider.rascal/modules/NOM.rsc @@ -1,29 +1,16 @@ -package org.ossmeter.metricprovider.rascal.trans.model; +module NOM -import com.googlecode.pongo.runtime.*; -import com.mongodb.*; +import lang::java::m3::Core; +import List; +import String; +import Map; -public class RascalMetrics extends PongoDB { - - public RascalMetrics() {} - - public RascalMetrics(DB db) { - setDb(db); - } - - protected MeasurementCollection measurements = null; - - - - public MeasurementCollection getMeasurements() { - return measurements; - } - - - @Override - public void setDb(DB db) { - super.setDb(db); - measurements = new MeasurementCollection(db.getCollection("measurements")); - pongoCollections.add(measurements); - } +int numberOfMethods(loc cl, M3 model) = size([ m | m <- model@containment[cl], isMethod(m)]); + +map[str class, int nom] getNOM(M3 fileM3) { + return (replaceAll(replaceFirst(cl.path, "/", ""), "/", "."):numberOfMethods(cl, fileM3) | <cl,_> <- fileM3@containment, isClass(cl)); +} + +map[str class, int nom] getNOM(loc file) { + return ("": -1); }