Add diffentry files for parsed violation information.

This commit is contained in:
Kui LIU
2017-08-04 18:26:27 +02:00
parent afc4ffb8d3
commit 05d4adc4bd
2 changed files with 63 additions and 32 deletions
@@ -0,0 +1,42 @@
package edu.lu.uni.serval.violation.parse;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import edu.lu.uni.serval.utils.FileHelper;
public class TestViolationParser {
private static final String REPO_PATH = "/Volumes/MacBook/repositories/";
private static final String previousFilesPath = "GumTreeInput/prevFiles/";
private static final String revisedFilesPath = "GumTreeInput/revFiles/";
private static final String positionsFilePath = "GumTreeInput/positions/";
private static final String diffentryFilePath = "GumTreeInput/diffentries/";
public static void main(String[] args) {
List<File> repositoriesList = new ArrayList<>();
File repositories = new File(REPO_PATH);
File[] subFiles = repositories.listFiles();
for (File subFile : subFiles) { // repos-a to u
if (subFile.isDirectory()) {
File[] repos = subFile.listFiles();
for (File repo : repos) {
if (repo.isDirectory()) {
repositoriesList.add(repo);
}
}
}
}
String fixedAlarmFile = "Dataset/fixed-alarms.list.txt";
FileHelper.createDirectory(previousFilesPath);
FileHelper.createDirectory(revisedFilesPath);
FileHelper.createDirectory(positionsFilePath);
FileHelper.createDirectory(diffentryFilePath);
ViolationParser parser = new ViolationParser();
parser.parseViolations(fixedAlarmFile, repositoriesList, previousFilesPath, revisedFilesPath, positionsFilePath, diffentryFilePath);
}
}
@@ -2,10 +2,12 @@ package edu.lu.uni.serval.violation.parse;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.errors.RevisionSyntaxException;
import edu.lu.uni.serval.git.exception.GitRepositoryNotFoundException;
import edu.lu.uni.serval.git.exception.NotValidGitRepositoryException;
import edu.lu.uni.serval.git.travel.GitRepository;
@@ -13,38 +15,14 @@ import edu.lu.uni.serval.utils.FileHelper;
import edu.lu.uni.serval.violation.Alarm;
import edu.lu.uni.serval.violation.Violation;
/**
*
* @author kui.liu
*
*/
public class ViolationParser {
private static final String REPO_PATH = "/Volumes/MacBook/repositories/";
private static final String revisedFilesPath = "GumTreeInput/revFiles/";
private static final String previousFilesPath = "GumTreeInput/prevFiles/";
private static final String positions = "GumTreeInput/positions/";
public static void main(String[] args) {
List<File> repositoriesList = new ArrayList<>();
File repositories = new File(REPO_PATH);
File[] subFiles = repositories.listFiles();
for (File subFile : subFiles) { // repos-a to u
if (subFile.isDirectory()) {
File[] repos = subFile.listFiles();
for (File repo : repos) {
if (repo.isDirectory()) {
repositoriesList.add(repo);
}
}
}
}
String fixedAlarmFile = "Dataset/fixed-alarms.list.txt";
FileHelper.createDirectory(revisedFilesPath);
FileHelper.createDirectory(previousFilesPath);
FileHelper.createDirectory(positions);
ViolationParser parser = new ViolationParser();
parser.parseViolations(fixedAlarmFile, repositoriesList);
}
public void parseViolations(String fixedAlarmFile, List<File> repos) {
public void parseViolations(String fixedAlarmFile, List<File> repos, String previousFilesPath, String revisedFilesPath, String positionsFilePath, String diffentryFilePath) {
AlarmsReader reader = new AlarmsReader();
Map<String, Violation> violations = reader.readAlarmsList(fixedAlarmFile);
int a = 0;
@@ -59,6 +37,7 @@ public class ViolationParser {
}
if ("".equals(repoName)) {
a ++;
System.out.println(projectName);
continue;
}
Violation violation = entry.getValue();
@@ -79,6 +58,9 @@ public class ViolationParser {
String fixedFileContent = gitRepo.getFileContentByCommitIdAndFileName(fixedCommitId, fixedFileName);
if (fixedFileContent == null || "".equals(fixedFileContent)) continue;
String diffentry = gitRepo.getDiffentryByTwoCommitIds(buggyCommitId, fixedCommitId, fixedFileName);
if (diffentry == null) continue;
String commitId = buggyCommitId.substring(0, 6) + "_" + fixedCommitId.substring(0, 6);
String fileName = fixedFileName.replaceAll("/", "#");
fileName = projectName + "_" + commitId + fileName;
@@ -88,10 +70,13 @@ public class ViolationParser {
}
String buggyFile = previousFilesPath + "prev_" + fileName;
String fixedFile = revisedFilesPath + fileName;
String positionFile = positions + fileName.replace(".java", ".txt");
fileName = fileName.replace(".java", ".txt");
String positionFile = positionsFilePath + fileName;
String diffentryFile = diffentryFilePath + fileName;
FileHelper.outputToFile(buggyFile, buggyFileContent, false);
FileHelper.outputToFile(fixedFile, fixedFileContent, false);
FileHelper.outputToFile(positionFile, readPosition(alarm.getPositions()), false);
FileHelper.outputToFile(diffentryFile, diffentry, false);
}
} catch (GitRepositoryNotFoundException e) {
e.printStackTrace();
@@ -99,6 +84,10 @@ public class ViolationParser {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (RevisionSyntaxException e) {
e.printStackTrace();
} catch (GitAPIException e) {
e.printStackTrace();
} finally {
gitRepo.close();
}