-
Notifications
You must be signed in to change notification settings - Fork 16
Paprika model and metrics
This page describes the properties and metrics collected by Paprika and stored in the graph model.
The model is composed of 6 main entities with attached properties. In the graph database each entity (excepting modifier) is represented by a node and the properties are attached to this node.
Represents an analyzed application. Most of the properties are metadatas which are passed are parameters to launch the analysis.
Application name on the store.
Unique identifier of an application, allowing multiple version of an application to be stored without conflict. This value is the sha256 sum of the apk. It is calculated by Paprika but it should be passed as a parameter when launching the analyze to ensure that the good package is analyzed. The app_key is added to every type of node of an application to facilitate queries.
Application rating on the market, represented by a double between 0 and 5.
Format : yyyy-mm-dd hh:mm:ss.S Download date of the package in prevision of the analysis.
Format : yyyy-mm-dd hh:mm:ss.S Date of the analysis. Not present in the analysis but added as a graph Properties at the end of the analysis/
Name of the main application package, used as an identifier in the play store.
APK size in byte.
Name of the application developer.
Category of the application on the play store. Possible values are : APP_WALLPAPER, BOOKS_AND_REFERENCE, BUSINESS, COMICS, COMMUNICATION, EDUCATION, ENTERTAINMENT, FINANCE, GAME, HEALTH_AND_FITNESS, LIBRARIES_AND_DEMO, LIFESTYLE, MEDIA_AND_VIDEO, MEDICAL, MUSIC_AND_AUDIO, NEWS_AND_MAGAZINES, PERSONALIZATION, PHOTOGRAPHY, PRODUCTIVITY, SHOPPING, SOCIAL, SPORTS, TOOLS, TRANSPORTATION, TRAVEL_AND_LOCAL, WEATHER.
Price of the application the store, default value is "Free".
Number of downloads of the application of the store. Formatted like 10000+,10+...
Represents a class of the analyzed application. Java and Android library classes are excluded (but considered during the analysis).
Class name including package, e.g. com.example.MyClass . The name could be different from source code due to obfuscation.
Similar to app_key properties of PaprikaApp.
Java Access Level. See PaprikaModifiers
Name of the parent class, default is java.lang.Object.
Represents a class variable. The name could be different from source code due to obfuscation.
Application name on the store.
Similar to app_key properties of PaprikaApp.
Java Access Level. See PaprikaModifiers
Java type of the variable with package, default is java.lang.Object.
Represents a method of a class. The name could be different from source code due to obfuscation.
Method name. Constructors are identified by
Similar to app_key properties of PaprikaApp.
Java Access Level. See PaprikaModifiers
Name of a method and it's owning class, formatted as name#class_name.
Return type of the function, can be void, a java type or an object.
Represents an argument of a method/
/!\ The name is not available in the bytecode, thus here it is the type of the argument.
Similar to app_key properties of PaprikaApp.
Position of the argument in the method signature, starting at 1.
Enum for Java Access Level, can be public, protected or private. Attached as a property to the relevant nodes in the graph (Class, Method and variable).
Nodes are connected to each other via oriented relationship to from a graph. Each application are representend by independant subgraph. The following list describes the different of relationship.
Relationship from App to Class. Used to determined to which application a class belongs.
Relationship from Class to Method. Used to determined to which class a method belongs.
Relationship from Class to Variable. Used to determined to which class a variable belongs.
Relationship from Argument to Method. Used to determined to which method an argument belongs.
Relationship from Class to Class. Java and Android library class are not considered. Determine inheritance between two classes.
Relationship from Class to Class. Used when a class implements an interface.
Relationship from Method to Method. Used when a method call another method in at least one of its execution path. Multiple calls to the same method will result to only one relationship.
Relationship from Method to Variable. Used when a method read or write into a class variable in at least one of its execution path. Multiple usage will be represented by an unique relationship.
All the metrics are attached to a node as properties.
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Integer
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean
Type : Boolean