diff --git a/src/main/java/edu/lu/uni/serval/violation/Alarm.java b/src/main/java/edu/lu/uni/serval/violation/Alarm.java index 8c6427f..57ac96c 100644 --- a/src/main/java/edu/lu/uni/serval/violation/Alarm.java +++ b/src/main/java/edu/lu/uni/serval/violation/Alarm.java @@ -8,7 +8,8 @@ public class Alarm { private String buggyFileName; private String fixedCommitId; private String fixedFileName; - private Map positions; + private Map alarmTypes; + private Map positions; public Alarm(String buggyCommitId, String buggyFileName, String fixedCommitId, String fixedFileName) { super(); @@ -34,11 +35,19 @@ public class Alarm { return fixedFileName; } - public Map getPositions() { + public Map getAlarmTypes() { + return alarmTypes; + } + + public void setAlarmTypes(Map alarmTypes) { + this.alarmTypes = alarmTypes; + } + + public Map getPositions() { return positions; } - public void setPositions(Map positions) { + public void setPositions(Map positions) { this.positions = positions; } diff --git a/src/main/java/edu/lu/uni/serval/violation/parse/AlarmsReader.java b/src/main/java/edu/lu/uni/serval/violation/parse/AlarmsReader.java index 820b17f..673f4bb 100644 --- a/src/main/java/edu/lu/uni/serval/violation/parse/AlarmsReader.java +++ b/src/main/java/edu/lu/uni/serval/violation/parse/AlarmsReader.java @@ -28,12 +28,13 @@ public class AlarmsReader { String fixedInfo = line.substring(arrowIndex + 2); String[] buggyElements = buggyInfo.split(":"); String[] fixedElements = fixedInfo.split(":"); - + + String alarmType = buggyElements[0]; String projectName = buggyElements[1]; String buggyCommitId = buggyElements[2]; String buggyFile = buggyElements[3]; int startLine = Integer.parseInt(buggyElements[4]); - String endLineAndAlarmType = buggyElements[5] + ":" + buggyElements[0]; + int endLine = Integer.parseInt(buggyElements[5]); String fixCommitId = fixedElements[1]; String fixedFile = fixedElements[2]; @@ -50,11 +51,23 @@ public class AlarmsReader { int index = alarms.indexOf(alarm); if (index >= 0) { Alarm tempAlarm = alarms.get(index); - Map positions = tempAlarm.getPositions(); - positions.put(startLine, endLineAndAlarmType); + Map positions = tempAlarm.getPositions(); + if (positions.containsKey(startLine)) { + int end = positions.get(startLine); + if (endLine < end) { + positions.put(startLine, endLine); + tempAlarm.getAlarmTypes().put(startLine, alarmType); + } + } else { + positions.put(startLine, endLine); + tempAlarm.getAlarmTypes().put(startLine, alarmType); + } } else { - Map positions = new HashMap<>(); - positions.put(startLine, endLineAndAlarmType); + Map alarmTypes = new HashMap<>(); + alarmTypes.put(startLine, alarmType); + alarm.setAlarmTypes(alarmTypes); + Map positions = new HashMap<>(); + positions.put(startLine, endLine); alarm.setPositions(positions); alarms.add(alarm); }