package org.monkey.comparator; import org.monkey.comparator.bo.Bug; public class GeneralPropertiesFeature extends Feature { private static double bugCategoryScore; private static double lineNumberScore; private static double functionNameScore; private static double fileNameScore; public GeneralPropertiesFeature(Bug bugA, Bug bugB, double featureTotalScore) { super(bugA, bugB, featureTotalScore); featureName = "Feature: Bug General Properties"; } private double compareGeneralProperties() { double score = 0; if (bugA.getCategory().equals(bugB.getCategory())) score += bugCategoryScore; if (bugA.getFileName().equals(bugB.getFileName())) score += fileNameScore; if (bugA.getFunctionName().equals(bugB.getFunctionName())) score += functionNameScore; if (bugA.getLineNo() == bugB.getLineNo()) { score += lineNumberScore; } else { score += Util.weightLineNumberDifference(bugA.getLineNo(), bugB.getLineNo()) * lineNumberScore; } return score; } @Override public double score() { assignScorePoints(); return compareGeneralProperties(); } @Override protected void assignScorePoints() { bugCategoryScore = Constants.BUG_CATEGORY_WEIGHT * featureTotalScore; lineNumberScore = Constants.LINE_NUMBER_WEIGHT * featureTotalScore; functionNameScore = Constants.BUG_FUNCTION_NAME_WEIGHT * featureTotalScore; fileNameScore = Constants.FILE_NAME_WEIGHT * featureTotalScore; } @Override protected String getFeatureName() { return featureName; } }