tomaszcekalo / StaticProgramAnalyzer

1 stars 0 forks source link

PQL-Discard #20

Open tomaszcekalo opened 7 months ago

tomaszcekalo commented 7 months ago

Underscore ‘’ is a placeholder for an unconstrained synonym. Symbol ‘’ can be only used when the context uniquely implies the type of the design entity denoted by ‘_’.

Handbook.pdf - page 65

tomaszcekalo commented 7 months ago

@tomaszcekalo Mam pewien problem ze zrozumieniem przetwarzania PQL. W jakim celu do każdego zapytania pql jest dodawane variableQueries.Add("_", _pkb.TokenList.ToList()); ?

Ogólnie to działało tak: dla każdej zmiennej w select bierzemy wszystkie możliwe wartości. Później robimy wszystkie możliwe kombinacje między tymi zmiennymi. Następnie na podstawie warunków (typów zmiennej, propertiesów, Calls, Parent itd.) eliminujemy te kombinacje które nie spełniają tych warunków. Na końcu wyświetlamy co mamy bez powtórzeń.

Ale, przez ten znaczek discard wszystko się komplikuje. Trzebaby dodawać całe mnóstwo dziwnych edge caseów, bez sensu. Dwa: Nie zadziała Ci test Select BOOLEAN such that Calls (, ) W nim nie masz zmiennych. A jak nie ma zmiennych to jest zero kombinacji. Możesz spróbwać zakomentować tą linijkę, ten konkretny test przestanie działać. Niektóre pozostałe, te z discardem, też mogą się wykładać. Stąd te moje udziwnienie. Dzięki niemu sporo tych warunków mogłem wywalić, a kod działał prawidłowo.

tomaszcekalo commented 7 months ago

Jako że ten znaczek trzeba sprawdzać dla wszystkich możliwych zapytań to to zostawiamy jako ongoing i będziemy naprawiać tam gzie trzeba