Metric.java
package codeanalyzer.metric;
import codeanalyzer.reader.SourceFileReader;
import java.util.List;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.io.IOException;
public abstract class Metric {
protected String label;
protected SourceFileReader fileReader;
protected Metric(String label, SourceFileReader fileReader) {
this.label = label;
this.fileReader = fileReader;
}
public String getLabel() {
return label;
}
public abstract int calculateWithRegex(String filepath) throws IOException;
public abstract int calculateWithStringComparison(String filepath) throws IOException;
public int regexCalculator(String sourceCode, String regex) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sourceCode);
int count = 0;
while (matcher.find()) {
count++;
}
return count;
}
public int strcompCalculator(List<String> sourceCodeList, Predicate<String> condition) {
int count = 0;
for (String line : sourceCodeList) {
line = line.strip();
if (condition.test(line)) {
count++;
}
}
return count;
}
}