Unreleased - 2023-12-20
- Add side-effect analysis.
- The options
--class-pathand--app-class-pathcan be repeated multiple times to specify multiple paths. - Pointer analysis
- Add
Plugin.onPhaseFinish(). - Support specifying multiple method signatures in one
@InvokeHandlerannotation. - Add
getInfo()to call graph edges and pointer flow edges.
- Add
- Taint analysis
- Support specifying IndexRef (e.g.,
index: "0[*]"andindex: "0.f") in call sources and parameter sources. - Support specifying IndexRef in sinks.
- Support specifying IndexRef (e.g.,
- API changes
- Change
Solver.addPFGEdge(Pointer,Pointer,FlowKind,Type)andSolver.addPFGEdge(Pointer,Pointer,FlowKind,Transfer)toSolver.addPFGEdge(PointerFlowEdge)and related APIs.
- Change
0.2.2 - 2023-09-23
- Add option
--app-class-path. - Add option
--keep-results. - Add option
--output-dir. - Add option
-wc, --world-cache-mode. - Add def-use analysis.
- Add dominator-finding algorithm.
- Add generics signature information for Class, Method, and Field.
- Include documentation source in the repository.
- Taint analysis
- Support taint source for arguments of method calls and method parameters.
- Support taint source for field loads.
- Support taint sanitization for method parameters.
- Dump taint flow graph.
- Support loading multiple taint configuration files.
- Support taint transfer between variables and instance fields/array elements.
- Support call-site mode.
- Pointer analysis
- Support adding entry points of the program to analyze.
- Support analysis time limit.
- Support propagation for values of primitive types.
- Support hybrid inference-based and log-based reflection analysis.
- Add Solar reflection analysis (TOSEM'19).
- Support annotation-based invoke handler registration.
- Support dumping points-to set in YAML format.
- Option and configuration changes
- Change All
dumprelated options. Previously, mostdumpoptions require users to specify a path to dump file; now, Tai-e uses fixed path for dump file (the file name is fully fixed, and users can still change dump directory via option--output-dir), so that users only need to specifytrueorfalsefor alldumpoptions. - Rename analysis
class-dumpertoir-dumper. - Pointer analysis
- Replace
merge-string-constantsbydistinguish-string-constants. - Replace
actionbydumpandexpected-file.
- Replace
- Taint analysis
- Require to add
kindto source configurations. Previously, the taint analysis only supports one kind of sources, i.e., result of method call. Now, we support more kinds of sources, including argument or result of method call (kind: call), and method parameter (kind: param) , so users need to specify kind of each source. Please see an example.
- Require to add
- Change All
- API changes
- Change
pascal.taie.analysis.pta.core.heap.HeapModel.getMockObj(String,...)toHeapModel.getMockObj(Descriptor,...). - Change APIs of
pascal.util.graph.Edgeand its subclasses. - Change return type of
Exp.getUses()toSet<RValue>. - Change return type of
Stmt.getUses()toSet<RValue>.
- Change
0.0.3 - 2022-08-02
- First release.