secure-software-engineering / phasar

A LLVM-based static analysis framework.
Other
927 stars 140 forks source link

Reorder Analysis Dependencies #530

Closed fabianbs96 closed 1 year ago

fabianbs96 commented 1 year ago

The current definition of IFDSTabulationProblem and IDETabulationProblem has two drawbacks that are addressed in this PR:

pdschubert commented 1 year ago

Thanks, @fabianbs96. I'll review this through the next few days :+1:

vulder commented 1 year ago

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 ;)

fabianbs96 commented 1 year ago

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.

vulder commented 1 year ago

:+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:

fabianbs96 commented 1 year ago

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