Skip to content

4. Navigating the Vis.js Graph for Android

projectbtle edited this page Nov 1, 2019 · 1 revision

Vis.js Graph for Android

The Android plugin has a custom graphing option in addition to the standard neo4j. This was introduced because some capabilities such as click-to-expand/collapse (in the way we want it) are not available with the standard Neo4j Browser. The vis.js graph allows click-for-detail, double-click-to-expand/collapse, and basic filtering and highlighting.

Views

There are two "views", selectable via a dropdown list:

  1. Compact view shows the apps that matched at least one bug. This view doesn't show much detail, apart from the app name, and the bugs that the app matched.
  2. Expanded view shows all trace paths/methods actually returned by Jandroid. Clicking on a node shows the method name (or whatever information was returned by the bug template's GRAPH property)

Functionality

Click-for-detail

Clicking on a node will bring up basic information about the node. The information depends on the view type.

Double-click-to-expand/collapse

When the vis.js graph is generated (or when the page is refreshed), the view that is displayed is the Compact view, with one node per app (where the app must have satisfied at least one bug). Double-clicking a node will display all the individual bug-related nodes (e.g.., all the methods in trace chains). Double-clicking one of the "expanded" nodes will collapse them back onto the original app node.

Filtering

The vis.js graph allows for filtering nodes based on app or bug type. Note that when filtering by bug, if multiple bugs are selected, then only the nodes that satisfy all selected bugs will be displayed.

Highlighting

When analysing trace chains, and especially when manually verifying them, knowing the Start and End points (as identified by Jandroid) can make things easier. For this reason, functionality is available (via two checkboxes) to increase the border width of Start and End nodes, thereby making them more visible.

Notes

With trace chains, you may observe some End nodes with a dashed border. These are nodes that have been identified with lower certainty.

Caveats

The vis.js graph is not as "pretty" as that generated by Neo4j Browser, nor can it be queried. Also, nodes don't have descriptive names due to space restrictions. However, hovering over a node will display the app name/method signature/etc.

Clone this wiki locally