All Classes and Interfaces
Class
Description
Visitor that abstracts all symbols of a formula, given as ANTLR parse tree, that might interfere with further formula analysis.
AbstractingFormulaExtractor is an abstract class that extracts a formula from text containing a conditional annotation,
and then abstracts the formula using the custom
AbstractingFormulaExtractor.abstractFormula(String)
implementation of its subclass.Our AddToPC edit class from the ESEC/FSE'22 paper.
Our AddWithMapping edit class from the ESEC/FSE'22 paper.
Horizontal column alignments of a LaTex table.
Encapsulates the state and control flow during an analysis of the commit history of multiple
repositories using
VariationDiff
s.Hooks for analyzing commits using
VariationDiff
s.The effective runtime in seconds that we have when using multithreading.
The total number of commits in the observed history of the given repository.
Analysis strategy that monitors the completion level of a task.
The result of a
Analysis
.Type proxy and runtime key for the type of a
Metadata
subclass.Main entry point for performing large-scale empirical analyses on a range of git repositories.
Callbacks for
LineGraphExportAnalysis
.Exports all linegraph representations generated by an analysis directly to a file.
Collects all linegraph representations generated by an analysis and exports them at the end.
Collects the linegraph representations generated by an analysis and exports them once a certain threshold of
representations has been stored.
Interface for a parser that analyzes annotations in parsed text.
AnnotationType is an enum that describes whether a piece of text marks the start of an
annotation, the end of an annotation, or no annotation at all.
Assertions which cannot be disabled.
Statistics on runtimes for commit processing.
A bad variation diff is a variation diff that has no subtree sharing.
Memoization of the VariationTreeNodes a DiffNode was
converted to in
BadVDiff.fromGood(VariationDiff)
.Boolean abstraction for conditions in preprocessor macros.
This class provides an empty implementation of
CExpressionListener
,
which can be extended to create a listener which only needs to handle a subset
of the available methods.This class provides an empty implementation of
CExpressionVisitor
,
which can be extended to create a visitor which only needs to handle a subset
of the available methods.This interface defines a complete listener for a parse tree produced by
CExpressionParser
.This interface defines a complete generic visitor for a parse tree produced
by
CExpressionParser
.An edge format encoding the child index of this edge.
A clock counting the number of milliseconds since it was
start
ed.Collapses chains of nested non-edited annotations.
Properties of a column in a LaTex table.
Represents the changes made by a commit relative to another commit.
The result of processing all diffs of a commit.
Describes that a VariationDiff was created from a patch in a
CommitDiff
.Stores the time it took to process a single commit in a given repository in milliseconds.
Composite pattern for AnalysisStrategy.
Relevance predicate that generates (partial) variants from variation trees.
Result value for checking the consistency of a VariationDiff (e.g., if it s acyclic).
Validates, evaluates and benchmarks the construction of
VariationDiff
s using Gumtree.Timing of a variation diff construction with a specific matching algorithm and quality results compared to another variation diff.
Aggregate of the results of the three comparisons.
A row in a LaTex table containing the analysis data of a single dataset.
Visitor that controls how formulas given as an ANTLR parse tree are abstracted.
Extracts the expression from a C preprocessor statement.
Interface for values that can be converted to a CSV row.
This transformer removes all subtrees from a VariationDiff that are non-edited.
Description of a git repository dataset.
The DatasetFactory loads datasets and provides default values for DiffFilters and parse options.
Print NodeType, DiffType and Mappings for Annotations and Text for Artifacts.
Analogous to
ReleaseMiningDiffNodeFormat
but produces human readable labels instead of using integers.A helper class to load descriptions of the 44 open-source software product line repositories.
Default implementation of
EdgeLabelFormat
.Human readable diagnostic information bundle.
Describes an error that occurred when processing a text-based diff.
A filter for commits and patches.
Builder for a DiffFilter.
Deprecated.
Interface for extracting a formula from a line containing an annotation.
Identifies a line number in a textual diff.
A label consisting of lines with
line number
information for each line.Implementation of a node in a
VariationDiff
.Reads and writes
DiffNodes
from and to line graph.Making methods accessible for
DiffNodeLabelFormat
for formatting the output of DiffNodes
.Describes an error that occurred when processing a text-based diff.
Type of change made to an artifact (e.g., a line of text in a text-based diff).
This class groups the implementations for functions that generate views on variation diffs,
as described in Chapter 5 of our SPLC'23 paper - Views on Edits to Variational Software.
A LaTex row containing ellipsis representing missing lines in the table.
Filters all duplicates in a list of VariationDiffs regarding isomorphism.
Reads and writes edges between
DiffNodes
from and to line graph.Directions of edges.
Abstract edit class according to our ESEC/FSE'22 paper.
Interface for custom catalogs of edit classes.
Metadata that tracks how often edit classes were matched.
Counts the occurrences of a data point across commits.
This is the validation from our ESEC/FSE'22 paper.
Helper class to find suitable running examples.
An ExplainedFilter records for which reasons elements were filtered.
Metadata to log how often each filter was applied.
Metadata that stores the reasons why an
ExplainedFilter
filtered data.Common interface for serialisation of a single
VariationDiff
.Deprecated.
Utility functions for handling file paths.
Program to find the median commit time after the
EditClassValidation
has been performed.Class to fix bugs related to
True
and False
of FeatureIDE.This class is a witness that a formula had its true and false constants eliminated
or is just such a constant (and nothing else except from perhaps negations).
A view on a VariationDiff that shows the VariationDiff as a list of nodes and edges.
A view on a VariationTree that shows the VariationTree as a list of nodes and edges.
Format used for exporting a
VariationDiff
.Produces labels of kind
fromLine-toLine: NodeType
, suffixed by the node's formula if it is an annotation.Utilities for handling
Node
s as logical formulas.Labels containing all information encoded into a
DiffNode
.Layout for exactly one window.
Our Generalization edit class from the ESEC/FSE'22 paper.
This class creates a GitDiff-object from a git repository (Git-object).
Class for loading Git repositories from several sources.
Interface for patches from a git repository.
Minimal default implementation of
GitPatch
A file at a specific commit in a Git repository.
Refers to the structure that is represented by a VariationDiff.
Exporter for the Graphviz dot format.
Mixin providing convenience methods for checking certain node types.
A horizontal line separating two rows in a LaTex table.
Exception that is thrown when a syntactically incorrect feature annotation is found.
Exports tree by indexing them.
Counter for the number of times a wrapped function is called.
Util class for exporting data.
Class which groups functions of parsing variation diffs with JGit.
Extracts the expression from a JavaPP (Java PreProcessor) statement .
This class provides an empty implementation of
JPPExpressionListener
,
which can be extended to create a listener which only needs to handle a subset
of the available methods.This class provides an empty implementation of
JPPExpressionVisitor
,
which can be extended to create a visitor which only needs to handle a subset
of the available methods.This interface defines a complete listener for a parse tree produced by
JPPExpressionParser
.This interface defines a complete generic visitor for a parse tree produced
by
JPPExpressionParser
.Base interface for labels of
VariationTree
s and VariationDiff
s.Uses
DiffNode.getLabel()
as the linegraph node label.Label all nodes with their edit class.
Commonly used constants used in LaTex code.
Constants that are related to line graph IO.
Class that contains functions for writing
CommitDiff
s and (sets of) VariationDiff
s to a linegraph file.Exporter that converts a single VariationDiff's nodes and edges to linegraph.
Options necessary for exporting a line graph.
A source for VariationDiffs that were parsed from a linegraph file.
Root interface for any formats describing content's structure in a linegraph file.
Import VariationDiffs from line graph files.
Options necessary for importing a line graph.
Labels nodes using their line number in the source diff.
Class to hold a range of line numbers.
A label containing a list of lines represented as
String
s.Deprecated.
A reference to a file with path
path
in the local file system.Logs the start of all tasks as
INFO
to the tinylog API.A logical line consisting of multiple physical lines of a text file joined by line continuations.
Main entry point for running the feasibility study (Section 6) of our SPLC'23 paper
Views on Edits to Variational Software.
Print NodeType and DiffType and Mappings of Annotations.
Default repository for Marlin.
Extracts formulas from preprocessor annotations in the marlin firmware.
Generic interface to model composable and printable metadata.
Collection of constants for keys used in metadata files
Performs a postprocessing on mined frequent subgraphs in edits to find edit classes.
Accumulates multiple
AnalysisResult
s of several datasets.Finds artifact nodes whose label is exactly equal.
The type of nodes of a
DiffNode
and a VariationNode
.Empty strategy that does nothing.
A ParseErrorListener listens to syntactical errors discovered by an ANTLR parser while parsing a text.
Data class containing information about a single patch (i.e., the differences in a single file).
Parse options that should be used when parsing commits and patches within a commit history.
A wrapper for a
VariationDiffRenderer
for rendering PatchDiff
s.A source for VariationDiff's that were created from patch files on disk.
A unique reference to a diff of a file (patch) within an unspecified repository.
Source for VariationDiffs that were created from a patch given as a String.
Abstract class for edit patterns.
Generic Postprocessor for mined patterns.
Result type for prostprocessing.
A parser of preprocessor-like annotations.
A view of a
DiffNode
as variation node at a specific time.The catalog of edit classes proposed in our ESEC/FSE'22 paper.
A parser that parses propositional formula's from text to
Node
s.Command for running a python script with arguments.
Our Reconfiguration edit class from the ESEC/FSE'22 paper.
Our Refactoring edit class from the ESEC/FSE'22 paper.
Transformer that changes the label of each node using a relable function.
Transformer that relabels the root of a VariationDiff.
Formats for DiffNodes for mining.
Abstract definition of relevance predicates as defined in Section 3 in our SPLC'23 paper - Views on Edits to Variational Software.
Our RemFromPC edit class from the ESEC/FSE'22 paper.
Our RemWithMapping edit class from the ESEC/FSE'22 paper.
Replaces the label of the root node with
"root"
.Configuration options to configure rendering of VariationDiffs.
Builder for
RenderOptions
.Representation of git repositories used as datasets for DiffDetective.
Read the input from a local directory, a local zip file or a remote repository.
A row like entity that can be represented by a single row in code LaTex.
Class with static functions for satisfiability solving, potentially with some optimizations.
An iterator over the results of computations run in other threads.
Relevance predicate that searches for implementation artifacts in a variation tree.
Thrown if a precondition for setting up the execution of a command isn't met.
Representation of an executable command.
Thrown on execution errors of
ShellCommand
s.This class can execute
ShellCommand
s in a specific working directory and redirect their
output to a Java function.A template of a LaTex table containing a row with much information for each dataset.
Layout for exactly two windows.
Single executable command with arguments.
Default implementation for metadata that just wraps a single value.
NOT INTENDED FOR API USE.
Our Specialization edit class from the ESEC/FSE'22 paper.
Default repository for the snippet from the Marlin history used in the paper
"Concepts, Operations, and Feasibility of a Projection-Based Variation Control System",
Stefan Stanciulescu, Thorsten Berger, Eric Walkingshaw, Andrzej Wasowski
at ICSME 2016.
A collection of useful utilities related to string processing.
Product of all data relevant for exporting a single edge.
A template of a LaTex table containing basic information for each dataset.
Definitions for the style of a table.
Converter of analysis results to LaTex tables.
An identifiable
Predicate
where a predicate is identified with a generic tag.Interface for diffs to text that allows accessing the diff as text.
This class is used to represent, load and redraw
the Images of the entities and the world.
Exporter for TikZ pictures which can be embedded into a LaTeX document.
A value that refers to the state before or after an edit occurred.
Relevance predicate that traces a certain feature syntactically within a variation tree.
Relevance predicate that traces a certain feature semantically within a variation tree.
This class groups the implementations for functions that generate views on variation trees,
as described in Chapter 3 of our SPLC'23 paper - Views on Edits to Variational Software.
Class with methods for Tseytin conversion.
Helper class for Tseytin conversion that remembers generated formulas.
Layout for exactly any number of windows.
Labels are of the form
DiffType_NodeType
.Runtime exception for cases in which a formula extracted from a diff cannot be parsed.
Exception for cases in which a formula extracted from a diff cannot be parsed.
Our Untouched edit class from the ESEC/FSE'22 paper.
A template of a LaTex table containing the share of variability changing edits for each dataset.
Implementation of variation tree diffs from our ESEC/FSE'22 paper.
Helper class to check for cycles in VariationDiffs.
Adapter for running Gumtree's matching algorithms on the projections of variation diffs.
A filter on VariationDiffs that is equipped with some metadata T (e.g., for debugging or logging).
Reads and writes
VariationDiffSource
from and to line graph.Parse options that should be used when parsing
VariationDiff
s.Parser that parses
VariationDiff
s from text-based diffs.One line of a diff.
A VariationDiffRenderer renders VariationDiffs and CommitDiffs.
Debug data that keeps track of the number of exported nodes and their diffTypes.
Describes or identifies that data a VariationDiff was created or parsed from.
Interface that represents inplace transformations of VariationDiffs.
Class for traversing VariationDiffs and accumulating results.
Visitor for
VariationDiffTraversal
s.Extends an inner
Label
, the object language, with variability, the meta language.A base class for views of a node in a variation tree.
Representation of a concrete variation tree with source information.
Adapter for running Gumtree's matching algorithms on variation trees.
Describes that a
VariationDiff
was created from two VariationTree
s.A single node in a variation tree.
A reference to the source of the variation tree.
Implementation of the feasibility study from Section 6 of our paper
Views on Edits to Variational Software
at SPLC'23.
Single data point in our feasibility study.
Holds various information of a variation diff.
A
VariationDiffSource
that remembers that a variation diff represents a view on
another variation diff.An exception that signals that an invalid
Time
was used for a certain computation.