use of de.dagere.peass.dependency.analysis.data.ChangedEntity in project peass by DaGeRe.
the class ClassifyByRules method classifyProject.
private void classifyProject(final Set<String> allFeatures, final String project) throws IOException, JsonParseException, JsonMappingException {
final RepoFolders repos = new RepoFolders();
final File learnFile = new File(repos.getClassificationFolder(), project + ".json");
final File learnPropertyFile = repos.getProjectPropertyFile(project);
final Classification learn = Constants.OBJECTMAPPER.readValue(learnFile, Classification.class);
final VersionChangeProperties changes = Constants.OBJECTMAPPER.readValue(learnPropertyFile, VersionChangeProperties.class);
final File methodFileFolder = new File(learnPropertyFile.getParentFile(), "methods");
try (BufferedWriter csvWriter = new BufferedWriter(new FileWriter(new File(project + ".csv")))) {
for (final Entry<String, ChangeProperties> version : changes.getVersions().entrySet()) {
final File versionFolder = new File(methodFileFolder, version.getKey());
for (final Entry<String, List<ChangeProperty>> testcase : version.getValue().getProperties().entrySet()) {
for (final ChangeProperty property : testcase.getValue()) {
final VersionClass versionClass = learn.getVersions().get(version.getKey());
final ChangedEntity entity = new ChangedEntity(testcase.getKey(), "", property.getMethod());
final TestcaseClass testcaseClass = versionClass.getTestcases().get(entity);
final GuessDecider guesser = new GuessDecider(versionFolder);
final Set<String> types = testcaseClass.getTypes();
writeFeatures(allFeatures, csvWriter, property, guesser);
writeType(csvWriter, types);
csvWriter.write("\n");
csvWriter.flush();
}
}
}
}
}
use of de.dagere.peass.dependency.analysis.data.ChangedEntity in project peass by DaGeRe.
the class ReadProperties method detectVersionProperty.
private int detectVersionProperty(final File projectFolder, final File viewFolder, final BufferedWriter csvWriter, final VersionChangeProperties versionProperties, final Entry<String, Changes> versionChanges, final String predecessor, final ExecutionData data) throws IOException, JsonGenerationException, JsonMappingException {
final File methodFolder = new File(out.getParentFile(), "methods");
methodFolder.mkdirs();
final String version = versionChanges.getKey();
final ChangeProperties changeProperties = new ChangeProperties();
changeProperties.setCommitText(GitUtils.getCommitText(projectFolder, version));
changeProperties.setCommitter(GitUtils.getCommitter(projectFolder, version));
versionProperties.getVersions().put(version, changeProperties);
int count = 0;
for (final Entry<String, List<Change>> changes : versionChanges.getValue().getTestcaseChanges().entrySet()) {
final String testclazz = changes.getKey();
String module = null;
for (TestCase test : data.getVersions().get(versionChanges.getKey()).getTests()) {
if (test.getClazz().equals(testclazz)) {
module = test.getModule();
}
}
final List<ChangeProperty> properties = new LinkedList<>();
changeProperties.getProperties().put(testclazz, properties);
for (final Change testcaseChange : changes.getValue()) {
ExecutionConfig config = new ExecutionConfig();
config.setVersion(version);
config.setVersionOld(predecessor);
ChangedEntity entity = new ChangedEntity(testclazz, module);
final PropertyReadHelper reader = new PropertyReadHelper(config, entity, testcaseChange, projectFolder, viewFolder, methodFolder, null);
final ChangeProperty currentProperty = reader.read();
// if (currentProperty != null) {
properties.add(currentProperty);
Constants.OBJECTMAPPER.writeValue(out, versionProperties);
writeCSVLine(csvWriter, currentProperty, projectFolder.getName());
// }
count++;
}
}
return count;
}
use of de.dagere.peass.dependency.analysis.data.ChangedEntity in project peass by DaGeRe.
the class FindWrong method main.
public static void main(final String[] args) throws JsonParseException, JsonMappingException, IOException {
final File executeCommands = new File("execute-wrong.sh");
final PrintStream goal = new PrintStream(new FileOutputStream(executeCommands));
final File folder = new File("/home/reichelt/daten3/diss/repos/properties/classification");
int index = 0;
for (final File project : folder.listFiles()) {
if (project.getName().endsWith(".json")) {
final String projectName = project.getName().substring(0, project.getName().indexOf('.'));
final String url = Constants.defaultUrls.get(projectName);
RunCommandWriter writer = new RunCommandWriterSlurm(goal, "wrong_rerun", projectName, url);
if (url != null) {
final Classification data = Constants.OBJECTMAPPER.readValue(project, Classification.class);
for (final Map.Entry<String, VersionClass> version : data.getVersions().entrySet()) {
for (final Map.Entry<ChangedEntity, TestcaseClass> method : version.getValue().getTestcases().entrySet()) {
if (method.getValue().getTypes().contains("WRONG") || method.getValue().getTypes().contains("WRONGTEST")) {
// System.out.println(version.getKey() + " " + method.getKey());
writer.createSingleMethodCommand(index, version.getKey(), method.getKey().toString());
index++;
}
}
}
} else {
System.err.println("Missing url: " + projectName);
}
}
}
}
use of de.dagere.peass.dependency.analysis.data.ChangedEntity in project peass by DaGeRe.
the class TestShortening method testShorteningJUnit5Parameterized_methodItself.
@Test
public void testShorteningJUnit5Parameterized_methodItself() throws Exception {
final File test = new File(folder, "src/test/java/de");
test.mkdirs();
final File testClazz = new File(test, "ExampleTestJUnit5Parameterized.java");
try (JUnitTestShortener shortener = new JUnitTestShortener(transformer, folder, new ChangedEntity("de.ExampleTestJUnit5Parameterized", ""), "testMe")) {
Assert.assertFalse(FileUtils.contentEquals(exampleTestFile5Parameterized, testClazz));
try (FileInputStream inputStream = new FileInputStream(testClazz)) {
String fileContent = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
System.out.println(fileContent);
int matches = StringUtils.countMatches(fileContent, "@Test");
Assert.assertEquals(0, matches);
int matchesParameterized = StringUtils.countMatches(fileContent, "@ParameterizedTest");
Assert.assertEquals(1, matchesParameterized);
}
}
Assert.assertTrue(FileUtils.contentEquals(exampleTestFile5Parameterized, testClazz));
}
use of de.dagere.peass.dependency.analysis.data.ChangedEntity in project peass by DaGeRe.
the class TestShortening method testSubclassShortening.
@Test
public void testSubclassShortening() throws Exception {
final File test = new File(folder, "src/test/java/de");
test.mkdirs();
final File testClazz = new File(test, "ExampleTest.java");
final File subClazz = new File(test, "SubTest.java");
try (JUnitTestShortener shortener = new JUnitTestShortener(transformer, folder, new ChangedEntity("de.SubTest", ""), "test3")) {
Assert.assertFalse(FileUtils.contentEquals(exampleTestFile, testClazz));
Assert.assertFalse(FileUtils.contentEquals(subTestFile, subClazz));
}
Assert.assertTrue(FileUtils.contentEquals(exampleTestFile, testClazz));
Assert.assertTrue(FileUtils.contentEquals(subTestFile, subClazz));
}
Aggregations