Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upGitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign up
When generating a call graph, SPARK has to handle many special cases for concurrency helper classes like
java.lang.Threadorandroid.os.AsyncTask. These classes usually have control flow properties hidden to the call graph analysis, e.g., theThread'sThread.runmethod will be invoked asynchronously after callingThread.startorAsyncTask.onPostExecutewill be executed afterAsyncTask.doInBackgroundhas finished. SPARK handles these cases by building an artifical short circuit between these framework managed calls, i.e., it adds edges between the start, computation and epilogue methods of these concurrecy helper classes to the call graph.Currently, these special cases are hard coded into the
OnFlyCallGraphBuilderclass.OnFlyCallGraphBuilderneeds an extension point which is capable of handling such special cases. Handling of concurrency helper classes and other special cases should then be removed fromOnFlyCallGraphBuilderand encapsulated in implementations of the extension point.