Search in sources :

Example 6 with VersionChangeProperties

use of de.dagere.peass.analysis.properties.VersionChangeProperties 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;
}
Also used : PropertyReadHelper(de.dagere.peass.analysis.properties.PropertyReadHelper) ChangeProperty(de.dagere.peass.analysis.properties.ChangeProperty) ChangedEntity(de.dagere.peass.dependency.analysis.data.ChangedEntity) Change(de.dagere.peass.analysis.changes.Change) ExecutionConfig(de.dagere.peass.config.ExecutionConfig) LinkedList(java.util.LinkedList) TestCase(de.dagere.peass.dependency.analysis.data.TestCase) ChangeProperties(de.dagere.peass.analysis.properties.ChangeProperties) VersionChangeProperties(de.dagere.peass.analysis.properties.VersionChangeProperties) LinkedList(java.util.LinkedList) List(java.util.List) File(java.io.File)

Example 7 with VersionChangeProperties

use of de.dagere.peass.analysis.properties.VersionChangeProperties in project peass by DaGeRe.

the class ReadProperties method readVersionProperties.

public static VersionChangeProperties readVersionProperties(final ProjectChanges knowledge, final File versionFile) {
    final VersionChangeProperties versionProperties = new VersionChangeProperties();
    try {
        final VersionChangeProperties allProperties = Constants.OBJECTMAPPER.readValue(versionFile, VersionChangeProperties.class);
        for (final Entry<String, Changes> versionChanges : knowledge.getVersionChanges().entrySet()) {
            final String version = versionChanges.getKey();
            final ChangeProperties allProps = allProperties.getVersions().get(version);
            if (allProps != null) {
                final ChangeProperties changeProperties = new ChangeProperties();
                changeProperties.setCommitText(allProps.getCommitText());
                changeProperties.setCommitter(allProps.getCommitText());
                versionProperties.getVersions().put(version, changeProperties);
                for (final Entry<String, List<Change>> changes : versionChanges.getValue().getTestcaseChanges().entrySet()) {
                    final String testclazz = changes.getKey();
                    final List<ChangeProperty> properties = new LinkedList<>();
                    final List<ChangeProperty> oldTestcaseProperties = allProps.getProperties().get(changes.getKey());
                    if (oldTestcaseProperties != null) {
                        changeProperties.getProperties().put(testclazz, properties);
                        for (final Change change : changes.getValue()) {
                            for (final ChangeProperty prop : oldTestcaseProperties) {
                                if (prop.getMethod().equals(change.getMethod())) {
                                    properties.add(prop);
                                }
                            }
                        }
                    }
                }
            }
        }
    } catch (final IOException e) {
        e.printStackTrace();
    }
    return versionProperties;
}
Also used : ProjectChanges(de.dagere.peass.analysis.changes.ProjectChanges) Changes(de.dagere.peass.analysis.changes.Changes) ChangeProperties(de.dagere.peass.analysis.properties.ChangeProperties) VersionChangeProperties(de.dagere.peass.analysis.properties.VersionChangeProperties) LinkedList(java.util.LinkedList) List(java.util.List) ChangeProperty(de.dagere.peass.analysis.properties.ChangeProperty) Change(de.dagere.peass.analysis.changes.Change) IOException(java.io.IOException) VersionChangeProperties(de.dagere.peass.analysis.properties.VersionChangeProperties) LinkedList(java.util.LinkedList)

Example 8 with VersionChangeProperties

use of de.dagere.peass.analysis.properties.VersionChangeProperties in project peass by DaGeRe.

the class CreateOverviewStatistics method main.

public static void main(final String[] args) throws JAXBException, JsonParseException, JsonMappingException, IOException {
    File dependencyFolder;
    final File repos;
    if (System.getenv(Constants.PEASS_REPOS) != null) {
        final String repofolder = System.getenv(Constants.PEASS_REPOS);
        repos = new File(repofolder);
        dependencyFolder = new File(repos, "dependencies-final");
    } else {
        throw new RuntimeException("Please define environment variable " + Constants.PEASS_REPOS);
    }
    final File propertyFolder = new File(repos, "properties/properties");
    final File changeFolder = new File(repos, "measurementdata/results");
    final File projectsFolder = new File("../../projekte");
    final DescriptiveStatistics[] stats = new DescriptiveStatistics[9];
    for (int i = 0; i < 9; i++) {
        stats[i] = new DescriptiveStatistics();
    }
    // "commons-imaging", "commons-io", "commons-numbers", "commons-pool", "commons-text", "httpcomponents-core", "k-9" }) {
    for (final String project : new String[] { "commons-csv", "commons-dbcp", "commons-fileupload", "commons-jcs", "commons-imaging", "commons-io", "commons-numbers", "commons-pool", "commons-text" }) {
        System.out.print(project + " & ");
        final int versions = GitUtils.getVersions(new File(projectsFolder, project));
        System.out.print(versions + " & ");
        stats[0].addValue(versions);
        final File executionFile = new File(dependencyFolder, ResultsFolders.TRACE_SELECTION_PREFIX + project + ".json");
        if (executionFile.exists()) {
            final ExecutionData changedTests = Constants.OBJECTMAPPER.readValue(executionFile, ExecutionData.class);
            System.out.print(changedTests.getVersions().size() + " & ");
            stats[1].addValue(changedTests.getVersions().size());
            int tests = 0;
            for (final TestSet testSet : changedTests.getVersions().values()) {
                tests += testSet.getTests().size();
            }
            System.out.print(tests + " & ");
            stats[2].addValue(tests);
            int changes = 0;
            int sourceChanges = 0;
            int sourceTests = 0;
            final File potentialChangeFolder = new File(changeFolder, project);
            if (potentialChangeFolder.exists()) {
                final File changefile = new File(potentialChangeFolder, project + ".json");
                final ProjectChanges measuredChanges = Constants.OBJECTMAPPER.readValue(changefile, ProjectChanges.class);
                changes = measuredChanges.getChangeCount();
                final File changefileOnlysource = new File(propertyFolder, project + "/" + project + ".json");
                if (changefileOnlysource.exists()) {
                    final VersionChangeProperties measuredChangesOnlysource = Constants.OBJECTMAPPER.readValue(changefileOnlysource, VersionChangeProperties.class);
                    for (final ChangeProperties changesAll : measuredChangesOnlysource.getVersions().values()) {
                        for (final List<ChangeProperty> method : changesAll.getProperties().values()) {
                            for (final ChangeProperty nowMetho : method) {
                                if (nowMetho.isAffectsSource()) {
                                    sourceChanges++;
                                }
                            }
                        }
                    }
                // sourceChanges = measuredChangesOnlysource.getChangeCount();
                }
            }
            final File allTestProps = new File(propertyFolder, project + "/" + project + "_all.json");
            if (allTestProps.exists()) {
                final VersionChangeProperties properties = Constants.OBJECTMAPPER.readValue(allTestProps, VersionChangeProperties.class);
                sourceTests = properties.getSourceChanges();
            }
            // System.out.print(sourceTests + " & ");
            // stats[3].addValue(sourceTests);
            System.out.print(changes + " & ");
            stats[4].addValue(changes);
            System.out.print(sourceChanges + " & ");
            stats[5].addValue(sourceChanges);
            final File changeTestProperties = new File(propertyFolder, project + File.separator + project + ".json");
            if (changeTestProperties.exists()) {
                final VersionChangeProperties versionProperties = Constants.OBJECTMAPPER.readValue(changeTestProperties, VersionChangeProperties.class);
                final ProjectStatistics projectStatistics = new ProjectStatistics();
                versionProperties.executeProcessor(projectStatistics);
                System.out.print(new DecimalFormat("##.##").format(projectStatistics.affectedLines.getMean()) + " & ");
                stats[6].addValue(projectStatistics.affectedLines.getMean());
                System.out.print(new DecimalFormat("##.##").format(projectStatistics.calls.getMean()) + " & ");
                stats[7].addValue(projectStatistics.calls.getMean());
                final double durationMeanChange = projectStatistics.changes.getMean();
                System.out.print(new DecimalFormat("##.##").format(durationMeanChange) + " \\% ");
                stats[8].addValue(durationMeanChange);
            }
        }
        System.out.print(" \\\\");
        System.out.println();
    }
    System.out.println("\\hline");
    System.out.print(" & ");
    for (int i = 0; i < 9; i++) {
        System.out.print(new DecimalFormat("##.##").format(stats[i].getMean()) + " & ");
    }
    System.out.println();
    for (int i = 0; i < 9; i++) {
        System.out.print(stats[i].getSum() + " & ");
    }
    System.out.println();
}
Also used : DescriptiveStatistics(org.apache.commons.math3.stat.descriptive.DescriptiveStatistics) DecimalFormat(java.text.DecimalFormat) ChangeProperty(de.dagere.peass.analysis.properties.ChangeProperty) VersionChangeProperties(de.dagere.peass.analysis.properties.VersionChangeProperties) ExecutionData(de.dagere.peass.dependency.persistence.ExecutionData) ProjectChanges(de.dagere.peass.analysis.changes.ProjectChanges) ChangeProperties(de.dagere.peass.analysis.properties.ChangeProperties) VersionChangeProperties(de.dagere.peass.analysis.properties.VersionChangeProperties) File(java.io.File) TestSet(de.dagere.peass.dependency.analysis.data.TestSet)

Example 9 with VersionChangeProperties

use of de.dagere.peass.analysis.properties.VersionChangeProperties in project peass by DaGeRe.

the class CreateClassificationData method main.

public static void main(final String[] args) throws JsonParseException, JsonMappingException, IOException {
    RepoFolders folders = new RepoFolders();
    String project = args[0];
    File goalFile = new File(folders.getClassificationFolder(), project + ".json");
    File propertyFile = folders.getProjectPropertyFile(project);
    if (propertyFile.exists()) {
        final VersionChangeProperties properties = Constants.OBJECTMAPPER.readValue(propertyFile, VersionChangeProperties.class);
        createClassificationData(properties, goalFile, project);
    } else {
        File changeFile = new File(folders.getResultsFolder(), project + File.separator + project + ".json");
        if (!changeFile.exists()) {
            changeFile = new File(folders.getResultsFolder(), project + ".json");
        }
        if (changeFile.exists()) {
            final ProjectChanges changes = Constants.OBJECTMAPPER.readValue(changeFile, ProjectChanges.class);
            createClassificationData(changes, goalFile, project);
        } else {
            LOG.error("Can not write classification data, both change file and property file are not defined!");
        }
    }
}
Also used : ProjectChanges(de.dagere.peass.analysis.changes.ProjectChanges) VersionChangeProperties(de.dagere.peass.analysis.properties.VersionChangeProperties) File(java.io.File) RepoFolders(de.dagere.peass.analysis.all.RepoFolders)

Example 10 with VersionChangeProperties

use of de.dagere.peass.analysis.properties.VersionChangeProperties in project peass by DaGeRe.

the class GuessClassificationsByRules method call.

@Override
public Void call() throws Exception {
    RepoFolders repos = new RepoFolders();
    File propertyFile = new File(methodFileFolder.getParentFile(), project + ".json");
    File classificationFile = new File(repos.getClassificationFolder(), project + ".json");
    Classification manual = Constants.OBJECTMAPPER.readValue(classificationFile, Classification.class);
    final VersionChangeProperties changes = Constants.OBJECTMAPPER.readValue(propertyFile, VersionChangeProperties.class);
    for (Entry<String, ChangeProperties> version : changes.getVersions().entrySet()) {
        guessVersion(manual, version);
    }
    System.out.println("Correct: " + correct + " Wrong " + wrong + " All: " + all);
    return null;
}
Also used : Classification(de.dagere.peass.analysis.groups.Classification) ChangeProperties(de.dagere.peass.analysis.properties.ChangeProperties) VersionChangeProperties(de.dagere.peass.analysis.properties.VersionChangeProperties) VersionChangeProperties(de.dagere.peass.analysis.properties.VersionChangeProperties) File(java.io.File) RepoFolders(de.dagere.peass.analysis.all.RepoFolders)

Aggregations

VersionChangeProperties (de.dagere.peass.analysis.properties.VersionChangeProperties)11 File (java.io.File)10 ProjectChanges (de.dagere.peass.analysis.changes.ProjectChanges)6 ChangeProperties (de.dagere.peass.analysis.properties.ChangeProperties)6 RepoFolders (de.dagere.peass.analysis.all.RepoFolders)5 ChangeProperty (de.dagere.peass.analysis.properties.ChangeProperty)5 LinkedList (java.util.LinkedList)4 List (java.util.List)4 Classification (de.dagere.peass.analysis.groups.Classification)3 Change (de.dagere.peass.analysis.changes.Change)2 Changes (de.dagere.peass.analysis.changes.Changes)2 GuessDecider (de.dagere.peass.analysis.guessing.GuessDecider)2 ChangedEntity (de.dagere.peass.dependency.analysis.data.ChangedEntity)2 TestSet (de.dagere.peass.dependency.analysis.data.TestSet)2 ExecutionData (de.dagere.peass.dependency.persistence.ExecutionData)2 BufferedWriter (java.io.BufferedWriter)2 FileWriter (java.io.FileWriter)2 IOException (java.io.IOException)2 ChangeReader (de.dagere.peass.analysis.changes.ChangeReader)1 TestcaseClass (de.dagere.peass.analysis.groups.TestcaseClass)1