Add a new method of reading diffentry.
This commit is contained in:
@@ -7,7 +7,9 @@ public class DiffEntryHunk {
|
|||||||
private int bugRange;
|
private int bugRange;
|
||||||
private int fixRange;
|
private int fixRange;
|
||||||
private String hunk;
|
private String hunk;
|
||||||
|
private int buggyHunkSize;
|
||||||
|
private int fixedHunkSize;
|
||||||
|
|
||||||
public DiffEntryHunk(int bugLineStartNum, int fixLineStartNum, int bugRange, int fixRange) {
|
public DiffEntryHunk(int bugLineStartNum, int fixLineStartNum, int bugRange, int fixRange) {
|
||||||
super();
|
super();
|
||||||
this.bugLineStartNum = bugLineStartNum;
|
this.bugLineStartNum = bugLineStartNum;
|
||||||
@@ -40,6 +42,22 @@ public class DiffEntryHunk {
|
|||||||
this.hunk = hunk;
|
this.hunk = hunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getBuggyHunkSize() {
|
||||||
|
return buggyHunkSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBuggyHunkSize(int buggyHunkSize) {
|
||||||
|
this.buggyHunkSize = buggyHunkSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFixedHunkSize() {
|
||||||
|
return fixedHunkSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFixedHunkSize(int fixedHunkSize) {
|
||||||
|
this.fixedHunkSize = fixedHunkSize;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "@@ -" + this.bugLineStartNum + ", " + this.bugRange + " +" + this.fixLineStartNum + ", " + this.fixRange + "\n" + this.hunk;
|
return "@@ -" + this.bugLineStartNum + ", " + this.bugRange + " +" + this.fixLineStartNum + ", " + this.fixRange + "\n" + this.hunk;
|
||||||
|
|||||||
@@ -149,4 +149,85 @@ public class DiffEntryReader {
|
|||||||
return diffentryHunks;
|
return diffentryHunks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read all hunks with pure deleted lines and added lines.
|
||||||
|
*
|
||||||
|
* @param diffentryFile
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<DiffEntryHunk> readHunks3(File diffentryFile) {
|
||||||
|
List<DiffEntryHunk> diffentryHunks = new ArrayList<>();
|
||||||
|
String content = FileHelper.readFile(diffentryFile);
|
||||||
|
BufferedReader reader = null;
|
||||||
|
try {
|
||||||
|
reader = new BufferedReader(new StringReader(content));
|
||||||
|
String line = null;
|
||||||
|
int buggyStartLine = 0;
|
||||||
|
int buggyRange = 0;
|
||||||
|
int fixedStartLine = 0;
|
||||||
|
int fixedRange = 0;
|
||||||
|
int buggyHunkSize = 0;
|
||||||
|
int fixedHunkSize = 0;
|
||||||
|
StringBuilder hunk = new StringBuilder();
|
||||||
|
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
if (RegExp.filterSignal(line.trim())) {
|
||||||
|
if (hunk.length() > 0) {
|
||||||
|
if (buggyStartLine > 0) {
|
||||||
|
DiffEntryHunk diffEntryHunk = new DiffEntryHunk(buggyStartLine, fixedStartLine, buggyRange, fixedRange);
|
||||||
|
diffEntryHunk.setHunk(hunk.toString());
|
||||||
|
diffentryHunks.add(diffEntryHunk);
|
||||||
|
}
|
||||||
|
hunk.setLength(0);
|
||||||
|
}
|
||||||
|
int plusIndex = line.indexOf("+");
|
||||||
|
String lineNum = line.substring(4, plusIndex);
|
||||||
|
String[] nums = lineNum.split(",");
|
||||||
|
buggyStartLine = Integer.parseInt(nums[0].trim());
|
||||||
|
if (nums.length == 2) {
|
||||||
|
buggyRange = Integer.parseInt(nums[1].trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
String lineNum2 = line.substring(plusIndex) .trim();
|
||||||
|
lineNum2 = lineNum2.substring(1, lineNum2.length() - 2);
|
||||||
|
String[] nums2 = lineNum2.split(",");
|
||||||
|
fixedStartLine = Integer.parseInt(nums2[0].trim());
|
||||||
|
if (nums2.length == 2) {
|
||||||
|
fixedRange = Integer.parseInt(nums2[1].trim());
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
if (line.startsWith("-")) {
|
||||||
|
buggyHunkSize ++;
|
||||||
|
} else if (line.startsWith("+")) {
|
||||||
|
fixedHunkSize ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hunk.append(line + "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buggyStartLine > 0) {
|
||||||
|
DiffEntryHunk diffEntryHunk = new DiffEntryHunk(buggyStartLine, fixedStartLine, buggyRange, fixedRange);
|
||||||
|
diffEntryHunk.setHunk(hunk.toString());
|
||||||
|
diffEntryHunk.setBuggyHunkSize(buggyHunkSize);
|
||||||
|
diffEntryHunk.setFixedHunkSize(fixedHunkSize);
|
||||||
|
diffentryHunks.add(diffEntryHunk);
|
||||||
|
}
|
||||||
|
hunk.setLength(0);
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (reader != null) {
|
||||||
|
reader.close();
|
||||||
|
reader = null;
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return diffentryHunks;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user