Description
Now UtBotSymbolicEngine class consists of Soot traversing logic, working with symbolic variables and working with the state queue. We need to separate this logic into different classes. The first thing to do is to extract the traversal logic, as well as the logic of working with symbolic variables, into separate Traverser class.
This changes also requires ExecutionState to be refactored. We need somehow to distinguish different type of states, so it's proposed to define a common state interface and make inheritors:
- TerminalState
- ExecutionState
Expected behavior
UtBotSymboicEngine.kt is split into two parts:
- UtBotSymbolicEngine.kt
- Traverser.kt
ExecutionState is refactored.
Potential alternatives
Leave all as it is.
Context
See this discussion on refactoring for more information.
Description
Now
UtBotSymbolicEngineclass consists of Soot traversing logic, working with symbolic variables and working with the state queue. We need to separate this logic into different classes. The first thing to do is to extract the traversal logic, as well as the logic of working with symbolic variables, into separateTraverserclass.This changes also requires
ExecutionStateto be refactored. We need somehow to distinguish different type of states, so it's proposed to define a common state interface and make inheritors:Expected behavior
UtBotSymboicEngine.ktis split into two parts:ExecutionStateis refactored.Potential alternatives
Leave all as it is.
Context
See this discussion on refactoring for more information.