Migration Help
Version 3.0.2
- Identifiers are hash-consed: the
IdentifierFactory hands out the same instance for equal ClassTypes, MethodSignatures, FieldSignatures, their sub signatures and PackageNames. They can therefore be compared with == and used as keys of an IdentityHashMap.
- As a consequence the constructors of these classes are not public anymore. Obtain them from the
IdentifierFactory of the View that the identifiers are used with:
| ClassType classType = view.getIdentifierFactory().getClassType("example.HelloWorld");
|
JavaIdentifierFactory.getInstance() and JavaModuleIdentifierFactory.getInstance() were removed - the factory belongs to a View now. Use view.getIdentifierFactory(); if there is no View at hand (e.g. while setting one up), instantiate it with new JavaIdentifierFactory().
JavaModuleIdentifierFactory.getInstance(module) was replaced by the instance method forModule(module):
| JavaModuleIdentifierFactory factory =
(JavaModuleIdentifierFactory) moduleView.getIdentifierFactory();
JavaModuleIdentifierFactory factoryOfModule = factory.forModule("mymodule");
|
Version 1.3.0
- The Typehierarchy API is now returning
Stream<ClassType> instead of Collection<ClassType>. The simplest fix to have the same behaviour as before would be to collect the Stream on your own ( e.g. via .collect(Collectors.toList()) ).
- Default BytecodeBodyinterceptors are enabled to improve Jimple. To mitigate that adapt the List of BodyInterceptors to your needs.
Version 1.2.0
- The (Java)Project structure was removed. You can configure the (Java)View directly.
- Bodyinterceptors are now passed as arguments into AnalysisInputLocations.
- The Scene singleton is dead. Long live the Scene. We have a central View object(!) now.
- Library first! No command line tool as primary goal. So you can configure parts of SootUp (near) where it is actually used.
- t.b.c.
Below we show a comparison of the code so far with the same functionality in sootup.