FlowDroid icon indicating copy to clipboard operation
FlowDroid copied to clipboard

Fragment dummy Main looks to be not added to Callgraph

Open maryammsd opened this issue 2 years ago • 1 comments

Hello,

I have this apk and try to extract its callgraph. However, I get the following callgraph edges for class "". It says there should be an edge from "<dummyMainClass: com.ichi2.anki.StudyOptionsFragment dummyMainMethod_com_ichi2_anki_StudyOptionsFragment(android.content.Intent,android.app.Activity)" to method "<com.ichi2.anki.StudyOptionsFragment: void ()> " whilst the source function doesn't exist in the callgraph. Why this happens?

Part of the callgraph is given below: Class 292: com.ichi2.anki.StudyOptionsFragment------- Method: <com.ichi2.anki.StudyOptionsFragment: void ()> ------- Coming edge is: <dummyMainClass: com.ichi2.anki.StudyOptionsFragment dummyMainMethod_com_ichi2_anki_StudyOptionsFragment(android.content.Intent,android.app.Activity)>Coming edge is: <dummyMainClass: com.ichi2.anki.StudyOptionsActivity dummyMainMethod_com_ichi2_anki_StudyOptionsActivity(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.StudyOptionsActivity dummyMainMethod_com_ichi2_anki_StudyOptionsActivity(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.MyAccount dummyMainMethod_com_ichi2_anki_MyAccount(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.MyAccount dummyMainMethod_com_ichi2_anki_MyAccount(android.content.Intent)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment: com.ichi2.anki.StudyOptionsFragment newInstance(boolean)>Coming edge is: <dummyMainClass: com.ichi2.anki.DeckPicker dummyMainMethod_com_ichi2_anki_DeckPicker(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.DeckPicker dummyMainMethod_com_ichi2_anki_DeckPicker(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.CardBrowser dummyMainMethod_com_ichi2_anki_CardBrowser(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.ModelBrowser dummyMainMethod_com_ichi2_anki_ModelBrowser(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.ModelFieldEditor dummyMainMethod_com_ichi2_anki_ModelFieldEditor(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.NoteEditor dummyMainMethod_com_ichi2_anki_NoteEditor(android.content.Intent)>Coming edge is: <dummyMainClass: com.ichi2.anki.Reviewer dummyMainMethod_com_ichi2_anki_Reviewer(android.content.Intent)>Outgoing edge is: <com.ichi2.anki.StudyOptionsFragment$1: void (com.ichi2.anki.StudyOptionsFragment)> Outgoing edge is: <android.support.v4.app.Fragment: void ()> Method , #IncomeEdges: 13, #OutgoingEdges: 2 ------- Method: <com.ichi2.anki.StudyOptionsFragment: int access$000(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$1: void onClick(android.view.View)> Method access$000, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: int access$002(com.ichi2.anki.StudyOptionsFragment,int)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$002, #IncomeEdges: 3, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: void access$100(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$1: void onClick(android.view.View)>Outgoing edge is: <com.ichi2.anki.StudyOptionsFragment: void openReviewer()> Method access$100, #IncomeEdges: 1, #OutgoingEdges: 1 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$1000(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1000, #IncomeEdges: 5, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.Button access$1100(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1100, #IncomeEdges: 6, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$1200(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1200, #IncomeEdges: 3, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$1300(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1300, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$1400(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1400, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$1500(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1500, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$1600(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3$1$1: void run()>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3$1: void run()>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1600, #IncomeEdges: 4, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: java.lang.Thread access$1700(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1700, #IncomeEdges: 3, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: java.lang.Thread access$1702(com.ichi2.anki.StudyOptionsFragment,java.lang.Thread)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1702, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$1800(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1800, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$1900(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$1900, #IncomeEdges: 2, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: void access$200(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$1: void onClick(android.view.View)>Outgoing edge is: <com.ichi2.anki.StudyOptionsFragment: void showCustomStudyContextMenu()> Method access$200, #IncomeEdges: 1, #OutgoingEdges: 1 ------- Method: <com.ichi2.anki.StudyOptionsFragment: boolean access$2000(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$2000, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: void access$300(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Outgoing edge is: <com.ichi2.anki.StudyOptionsFragment: void dismissProgressDialog()> Method access$300, #IncomeEdges: 1, #OutgoingEdges: 1 ------- Method: <com.ichi2.anki.StudyOptionsFragment: void access$400(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Outgoing edge is: <com.ichi2.anki.StudyOptionsFragment: void initAllContentViews()> Method access$400, #IncomeEdges: 1, #OutgoingEdges: 1 ------- Method: <com.ichi2.anki.StudyOptionsFragment: com.ichi2.libanki.Collection access$500(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3$1: void run()>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Outgoing edge is: <com.ichi2.anki.StudyOptionsFragment: com.ichi2.libanki.Collection getCol()> Method access$500, #IncomeEdges: 4, #OutgoingEdges: 1 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.widget.TextView access$600(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$600, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: boolean access$700(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$700, #IncomeEdges: 2, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: boolean access$702(com.ichi2.anki.StudyOptionsFragment,boolean)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$702, #IncomeEdges: 1, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: void access$800(com.ichi2.anki.StudyOptionsFragment,boolean)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Outgoing edge is: <com.ichi2.anki.StudyOptionsFragment: void openFilteredDeckOptions(boolean)> Method access$800, #IncomeEdges: 1, #OutgoingEdges: 1 ------- Method: <com.ichi2.anki.StudyOptionsFragment: android.view.View access$900(com.ichi2.anki.StudyOptionsFragment)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)>Coming edge is: <com.ichi2.anki.StudyOptionsFragment$3: void onPostExecute(com.ichi2.async.DeckTask$TaskData)> Method access$900, #IncomeEdges: 3, #OutgoingEdges: 0 ------- Method: <com.ichi2.anki.StudyOptionsFragment: void animateLeft()> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment: void openReviewer()>Outgoing edge is: <com.ichi2.anim.ActivityTransitionAnimation: void ()> Outgoing edge is: <android.support.v4.app.Fragment: android.support.v4.app.FragmentActivity getActivity()> Outgoing edge is: <com.ichi2.anim.ActivityTransitionAnimation: void slide(android.app.Activity,int)> Method animateLeft, #IncomeEdges: 1, #OutgoingEdges: 3 ------- Method: <com.ichi2.anki.StudyOptionsFragment: void closeStudyOptions(int)> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment: void onActivityResult(int,int,android.content.Intent)>Outgoing edge is: <com.ichi2.anim.ActivityTransitionAnimation: void ()> Outgoing edge is: <android.support.v4.app.Fragment: android.support.v4.app.FragmentActivity getActivity()> Outgoing edge is: <timber.log.Timber: void ()> Outgoing edge is: <com.ichi2.anim.ActivityTransitionAnimation: void slide(android.app.Activity,int)> Outgoing edge is: <timber.log.Timber: void e(java.lang.String,java.lang.Object[])> Method closeStudyOptions, #IncomeEdges: 1, #OutgoingEdges: 5 ------- Method: <com.ichi2.anki.StudyOptionsFragment: void dismissProgressDialog()> ------- Coming edge is: <com.ichi2.anki.StudyOptionsFragment: void access$300(com.ichi2.anki.StudyOptionsFragment)>Outgoing edge is: <timber.log.Timber: void ()> Outgoing edge is: <com.afollestad.materialdialogs.MaterialDialog: void dismiss()> Outgoing edge is: <android.app.Dialog: boolean isShowing()> Outgoing edge is: <java.lang.Throwable: java.lang.String getMessage()> Outgoing edge is: <java.lang.StringBuilder: java.lang.String toString()> Outgoing edge is: <java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)> Outgoing edge is: <java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)> Outgoing edge is: <java.lang.StringBuilder: void ()> Outgoing edge is: <timber.log.Timber: void e(java.lang.String,java.lang.Object[])>

maryammsd avatar Feb 28 '22 04:02 maryammsd

Hi, is there any update on this issue? can someone help me with it ?

maryammsd avatar Jul 08 '22 06:07 maryammsd