getTransitions() doesn't return all possible correct transitions
The method getTransitions in StateMachineGraphAnalyser is currently unable to handle multiple initial transitions like in SSLParameters rule. Additionally, it is doesn't return expected transitions when | operator is used in ORDER section.
In order to avoid cycles in the graph, the code here skips already visited transition in the graph. Since Stores is already visited in Gets->Loads->GetEntry->GetKey->SetEntry->Stores, the transitions Gets->Loads->SetEntry->Stores and Gets->Loads->GetKey->SetEntry->Stores containing Stores are skipped
Happens for MessageDigest rule
Expected:
Gets, DWOU
Gets, Updates, Digests
Gets, DWOU, Updates, Digests
Returned:
Gets, DWOU
Gets, DWOU, Updates, Digests
Happens for KeyStore rule
Expected:
Gets, Loads, GetEntry, GetKey, SetEntry, Stores
Gets, Loads, GetKey, SetEntry, Stores
Gets, Loads, GetEntry, GetKey
Gets, Loads, SetEntry, Stores
Gets, Loads, GetKey
Gets, Loads
Returned:
Gets, Loads, GetEntry, GetKey, SetEntry, Stores
Gets, Loads, GetEntry, GetKey
Gets, Loads, GetKey
Gets, Loads
Happens for SecureRandom rule
Expected:
Ins, Seeds, Ends, Seeds
Ins, Ends, Seeds
Ins, Seeds, Seeds
Ins, Seeds, Ends
Ins, Seeds
Ins, Ends
Ins
Returned:
Ins, Seeds, Ends, Seeds
Ins, Seeds, Ends
Ins, Seeds
Ins, Ends
Ins