lisa
lisa copied to clipboard
📚 a modular easy to use Library for Static Analysis aiming at multi-language analysis
### Memory model To add support for pointers, we first have to reshape the memory model. Instead of having only the heap, the memory is now partitioned in heap and...
**Description** Depending on the language, the scoping mechanism when a call is encountered might be different. The `LanguageFeatures` class should contain a `ScopingStrategy` that allows to customize how the analysis...
**Description** Sometimes, to explicitly invoke a method from a superclass (e.g., `super.foo()`), the receiver of the call can be set to `(Superclass) this`, that is, the current object casted to...
**Description** As an extension and finalization of #120, we should: - swap the evaluation of sub-expressions with the outer-most one in `NaryExpression` and `NaryStatement` - provide a proper backward `interproceduralAnalysis`...
**Description** There should be an out-of-the-box support for variadic functions. This can likely be implemented as an additional flag in the `Parameter` class, and having matching/assigning strategy take care of...
**Description** This pull request extends the point-based analyses available in LiSA to handle pointers to primitive types, implementing the Andersen points-to analysis.
**Description** Having type inference rules directly on symbolic operators makes it difficult to track what logic is being applied and requires redefinition of the operator to customize typing rules depending...
**Description** LiSA should support intertwining widening and narrowing as described [here](https://www.sciencedirect.com/science/article/pii/S0167642315004165?via%3Dihub).
**Description** Dynamic languages can modify the program structure at runtime, adding or removing fields or changing function definitions. LiSA should support this.
**Description** The analysis now follows a fixed 3-step workflow: `syntactic checks -> program fixpoint -> semantic checks`. We should allow custom workflows to enable scenarios like `program fixpoint -> simplify...