Add a new method of reading diffentry.

This commit is contained in:
Kui LIU
2017-12-19 23:25:06 +01:00
parent 824b60d03b
commit 507bfdb8ea
2 changed files with 100 additions and 1 deletions
@@ -7,7 +7,9 @@ public class DiffEntryHunk {
private int bugRange;
private int fixRange;
private String hunk;
private int buggyHunkSize;
private int fixedHunkSize;
public DiffEntryHunk(int bugLineStartNum, int fixLineStartNum, int bugRange, int fixRange) {
super();
this.bugLineStartNum = bugLineStartNum;
@@ -40,6 +42,22 @@ public class DiffEntryHunk {
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
public String toString() {
return "@@ -" + this.bugLineStartNum + ", " + this.bugRange + " +" + this.fixLineStartNum + ", " + this.fixRange + "\n" + this.hunk;
@@ -149,4 +149,85 @@ public class DiffEntryReader {
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;
}
}