diff --git a/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java b/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java index b8d37f4..b6fdac3 100644 --- a/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java +++ b/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java @@ -53,7 +53,7 @@ public class FixedViolationHunkParser extends FixedViolationParser { //Filter out the modify actions, which are not in the DiffEntry hunks. HunkActionFilter hunkFilter = new HunkActionFilter(); - List selectedPatchHunks = hunkFilter.filterActionsByLineNumber4C(diffentryHunks, actionSets, revFile, prevFile); + List selectedPatchHunks = hunkFilter.matchActionsByDiffEntryForC(diffentryHunks, actionSets, revFile, prevFile); for (DiffEntryHunk patchHunk : selectedPatchHunks) { List hunkActionSets = patchHunk.getActionSets(); diff --git a/src/main/java/edu/lu/uni/serval/gumtree/regroup/HierarchicalRegrouperForC.java b/src/main/java/edu/lu/uni/serval/gumtree/regroup/HierarchicalRegrouperForC.java index d31dd40..57aa788 100644 --- a/src/main/java/edu/lu/uni/serval/gumtree/regroup/HierarchicalRegrouperForC.java +++ b/src/main/java/edu/lu/uni/serval/gumtree/regroup/HierarchicalRegrouperForC.java @@ -29,14 +29,14 @@ public class HierarchicalRegrouperForC { List actionSets = new ArrayList<>(); - public List regroupGumTreeResults(List actions) { + public List regroupGumTreeResults(List actionsArgu) { /* * First, sort actions by their positions. */ -// List actions = new ListSorter(actionsArgu).sortAscending(); -// if (actions == null) { -// actions = actionsArgu; -// } + List actions = new ListSorter(actionsArgu).sortAscending(); + if (actions == null) { + actions = actionsArgu; + } /* * Second, group actions by their positions. diff --git a/src/main/java/edu/lu/uni/serval/gumtree/regroup/HunkActionFilter.java b/src/main/java/edu/lu/uni/serval/gumtree/regroup/HunkActionFilter.java index c564d20..fb1aa0b 100644 --- a/src/main/java/edu/lu/uni/serval/gumtree/regroup/HunkActionFilter.java +++ b/src/main/java/edu/lu/uni/serval/gumtree/regroup/HunkActionFilter.java @@ -352,37 +352,38 @@ public class HunkActionFilter { return selectedViolations; } - - public List filterActionsByLineNumber4C(List diffentryHunks, + /** + * Match hierarchical actions with code change diffs for C code. + * + * @param diffentryHunks + * @param actionSets + * @param revFile + * @param prevFile + * @return + */ + public List matchActionsByDiffEntryForC(List diffentryHunks, List actionSets, File revFile, File prevFile) { List selectedViolations = new ArrayList<>(); - for (DiffEntryHunk diffentryHunk : diffentryHunks) { -// int violationEndLine = violationStartLine + diffentryHunk.getBugRange(); int bugHunkStartLine = diffentryHunk.getBugLineStartNum(); int bugHunkEndLine = bugHunkStartLine + diffentryHunk.getBugRange() - 1; int fixHunkStartLine = diffentryHunk.getFixLineStartNum(); int fixHunkEndLine = fixHunkStartLine + diffentryHunk.getFixedHunkSize() - 1; for (HierarchicalActionSet actionSet : actionSets) { - int actionBugStartLine = actionSet.getBugStartLineNum(); -// if (actionBugStartLine == 0) { -// actionBugStartLine = setLineNumbers(actionSet, prevUnit, revUnit); -// } - int actionBugEndLine = actionSet.getBugEndLineNum(); - int actionFixStartLine = actionSet.getFixStartLineNum(); - int actionFixEndLine = actionSet.getFixEndLineNum(); - String actionStr = actionSet.getActionString(); if (actionStr.startsWith("INS")) { + int actionFixStartLine = actionSet.getBugStartLineNum(); + int actionFixEndLine = actionSet.getBugEndLineNum(); if (fixHunkStartLine <= actionFixEndLine && fixHunkEndLine >= actionFixStartLine ) { - if (actionBugStartLine != 0) { - diffentryHunk.getActionSets().add(actionSet); - } + diffentryHunk.getActionSets().add(actionSet); } } else { + int actionBugStartLine = actionSet.getBugStartLineNum(); + int actionBugEndLine = actionSet.getBugEndLineNum(); + if (bugHunkStartLine <= actionBugEndLine && bugHunkEndLine >= actionBugStartLine) { diffentryHunk.getActionSets().add(actionSet); }