- Dec 04, 2023
-
-
Carlos Galindo authored
- Moved from Work#getTraversedLoop
-
Carlos Galindo authored
- Now Constraints is just a stack of EdgeConstraint.
-
Carlos Galindo authored
-
Carlos Galindo authored
-
Carlos Galindo authored
- Config.summaries must be false, to disallow generation of internal summary edges with grammars.
-
Carlos Galindo authored
- Previously, tabular slicing algorithms cached summary edges between runs (no longer necessary). - SummaryTable is no longer in use, because tabular slicing is implemented without it.
-
- Nov 30, 2023
-
-
Carlos Galindo authored
-
Carlos Galindo authored
-
Carlos Galindo authored
Also implemented in subsumed version.
-
- Nov 29, 2023
-
-
Carlos Galindo authored
WorkNS didn't take into account lastEdgeType, causing incompleteness errors in slices.
-
- Nov 28, 2023
-
-
Carlos Galindo authored
- ConstrainedTabularAlgorithm: - Unified State and MState, moving the last edge type to Work. - For efficiency, don't store the last edge type unless it is relevant. - Removed assertions. - ConstrainedSubsumedTabularAlgorithm: added map to speed-up lookup of subsumed work objects.
-
- Nov 23, 2023
-
-
Carlos Galindo authored
-
Carlos Galindo authored
- Tabular algorithm: only traverse intraprocedural edges by default. - Improved subsumption checks in tabular algorithm. - Corrected actual-out detection. - Added assertions to check for incorrect interprocedural edges. - Control-flow is incorrect in anonymous routines: it produces interprocedural control dependence. - Parametrized erlang server connection settings. - Added new comparisons for benchmarks. - New script to run benchmarks and analyze results with SQLite.
-
- Nov 20, 2023
-
-
Carlos Galindo authored
- Worklist approach implemented through a Config flag in SummaryTable. - Unconstrained and constrained variantes (TabularAlgorithm & ConstrainedTabularAlgorithm). The constrained version features a limit to the size of the stack. - Constrained subsumed variant for efficiency (ConstrainedSubsumedTabularAlgorithm). - Efficient EdgeList (linked-list) to store edges visited through a traversal. - Bump language level to 16. - eKnife cli: added switch to use tabular algorithms. - Moved benchmarks out of eKnife and BencherTest.
-
- Oct 25, 2023
-
-
Carlos Galindo authored
- ️️SummaryTable: actual-out node may none or multiple matching formal-out. - EDG, SummaryTable: get and clear methods for stats. - EKnife, BencherTest: adapted for benchmarks in which running the benchmark alters the graph itself.
-
- Oct 19, 2023
-
-
Carlos Galindo authored
- Move summary settings from EDGFactory to Config. - The EDG now contains a SummaryTable, a map which computes summaries on-the-fly. - ConstrainedAlgorithm: now looks up summary edges in SummaryTable. - Fixed typo in SummaryEdgeGenerator#generateOnlyExternal.
-
- Jul 13, 2023
-
-
Carlos Galindo authored
- Basic support for records, bin, float, try, catch - Feature to count access constraints traversed - Feature to count access constraints present in the graph - Bugs fixed: - Can handle empty string represented as list `[]`. - Can handle other unary operators apart from `-int`. - Can handle nested list comprehensions. - Now requires a running instance of erlang, use the following command: erl -pa (pwd)/e-Knife/src/main/resources -name server@localhost -setcookie erlang -noshell - BencherTest now accepts `-DiterGen=NUM` and `-DiterSlice=NUM` as Java arguments.
-
- Feb 23, 2023
-
-
Carlos Galindo authored
-
Sergio Pérez authored
-
- Feb 16, 2023
-
-
Sergio Pérez authored
* Statistical functions to build tables
-
- Jul 26, 2022
-
-
Sergio Pérez authored
* Added bencher intra- and inter-procedural suits * Added Dockerfile
-
- Oct 05, 2021
-
-
Sergio Pérez authored
* Measured the generation time of the different graph edges * Added EKnife.timedRun to evaluate the slicer against all the possible slicing criteria of a program * Added intraprocedural bencher suite
-
- Oct 01, 2021
-
-
Sergio Pérez authored
* Repeated recursive grammar states ignored in summary generation * Increased the number of constraints that the stack can contain to 20 * Slice of 3 benchmarks improved
-
- Sep 10, 2021
-
-
Sergio Pérez authored
-
- Sep 07, 2021
-
-
Sergio Pérez authored
- Generators implicit and explicit restrictions are now more accurately treated - Created +-[]S (List structure constraints) - Created +-{}S (Tuple structure constraints) - New kind of edges (ValueStructural Edges) - Prevented the interference of the traversal of (Black) Structural Edges with other edges
-
- Jul 27, 2021
-
-
Sergio Pérez authored
* Erlang script path defined * Fixes in code generation: some sliced expressions removed instead of replaced * Fix guard stacks in CFG generation * Logic simplification in Node-Result creation process * Fixed dead clause detection * Improvements added to summary generation: + Function calls associated to a particular formal-out-formal-in summary edge are only repended when the grammar term is created, and not for each added production + The list of constraints stacked after an AsteriskConstraint are removed when another AsteriskConstraint is pushed to the stack
-
- Jul 23, 2021
-
-
Sergio Pérez authored
* Traversal restriction of Generator value edge traversal * CFG limitation for unreachable code
-
- Jul 09, 2021
-
-
Sergio Pérez authored
* ast.erl and saver.erl has been moved to e-knife resources folder * CFG and Value arcs are now in e-Knife * CFGs are built with a the visitor pattern * The graph library is now jgrapht * CFGs of the clauses of the same method are now independent * Interprocedural clause matching has been improved to not link unreachable clauses * Shadowed variables and its value are now delimited to their context * Classic algorithm has been added to slicing computed algorithms
-