Provides a framework for executing a static analysis in 5 Steps: ALIGNMENT, COMPLETION, ANALYSIS, RESOLUTION, and INTEGRATION in this prescribed order.
- src/edu/kit/kastel/sdq/analysiscouplingframework: Contains the abstract framework.
- Framework Instances: Directory for Instances of the framework. Each for different analyses, developed at specific branches.
The Project uses Java Compiler compliance level 17. Import the Main Project and all Framework Instance Projects into your Eclipse Workspace. For each instance implementation take a look at their READMEs to further install all necessary projects they depend on, to run that specific instance.
As shown in the bottom half of the grafic, you have to implement several classes of the abstract framework.
- Runner: Necessary to run your Instance by injecting your ConcreteConfiguration into the Framework.
- Configuration: Override createStrategy() to return your own strategy implementation.
- Processingstrategy: Pass your own implemented 5 ProcessingSteps to super() in the constructor.
- 5 ProcessingSteps: For each PS override the execute() method with a scriptcall which triggers the execution of the external project belonging to this Step. Furthermore getWorkflow() has to return a Workflow e.g. return new DefaultWorkflow(this);. Lastly you have to override getFilesForImport(), getFilesForExecution(), and getFilesForExport(), so they return the IDs of files needed in this PS.
- CONFIG.xml: This file contains ID → Path mappings for the necessary files, directories or scripts. It also contains an entrypoint and a UUID.
For further information take a look at the above mentioned elements in the linked ExampleImplementation.
To run a specific Framework instance that is already implemented, just rightclick the instances' Runner and select 'Run As > Java Application'. If one of the 5 ProcessingSteps detects an exception it returns a NotOKResult and the execution of the framework is stopped. The last successful Entrypoint is written back to the file CONFIG.xml. During next execution the framework starts directly at this point instead of the first ProcessingStep.