Closed fabianbs96 closed 1 year ago
Thanks, @fabianbs96. I'll review this through the next few days :+1:
One quick question before hand. Isn't IFDS <: IDE
conceptually the wrong direction? As a IDE problem is an IFDS one but not the other way around? Maybe a template structure where the "base parts" are IFDS and IDE parts get's woven in with a bit template magic. Could need a small adaption to the IDESolver, but maybe lead to a cleaner interface?
PS: I'm not sure, I'm just asking questions to explore design possibilities.
I'll also take a peak at the code later ;)
Thanks @vulder for this advice; I was also thinking about that. However, as the IDESolver is designed as a base-class of the IFDSSolver it only makes sense for the IDEProblem to be a base-class of the IFDSProblem. I aggree with you that conceptually it would make more sense for the IFDS Solver to be the base of the IDESolver. The reason I changed it this way now is that I didn't want to do larger changes on the IDESolver. Anyway I would really like to see a code peak from you.
:+1: For the code, can you give me a few pointers to the important files, so I don't have to look at all the dependent changes :laughing:
The most important files are the IDE- and IFDSTabulationProblem.h and maybe the second ctor of the IDESolver. I also did quite a lot changes in the AnalysisController, but these changes should not be that important on a conceptual level. To see how the changes affect analysis problems you may look at IFDSTaintAnalysis.h/.cpp
The current definition of IFDSTabulationProblem and IDETabulationProblem has two drawbacks that are addressed in this PR: