Online Manual



Reference

Reference

This chapter contains the formal description of SourceGlider analysis capabilities.

Java Elements Types

This part describes all the Java Elements Types available in SourceGlider.

Author

Meaning: The set of all authors that contributed to the source code of the Working Set.

Designation: The name of an author (taken from @author tags). If the tag appears in particular file, SourceGlider assumes, that the corresponding author contributed to the whole file, even if the tag appears before the single method. If several authors are mentioned, SourceGlider assumes that all of them contributed to the same file.

Special cases: Files that don't have @author tags are considered to be contributed by an unknown author.

Examples:
James Gosling
Arthur van Hoff
unknown

Folder

Meaning: The set of all folders in the part of Eclipse file system, representing the current Working Set. Each package corresponds to the folder, but not each folder corresponds to the package (e.g. project folders and package fragment roots). Folders are needed only for displaying the Structure Metrics.

Designation: The full path to the folder, separated by dots (like the full-qualified name of the package).

Special cases: There is a special folder Default package, corresponding to the default package (see Package).

Examples:
MyProject.src
java.lang
Default package

Invocation site

Meaning: The set of all call sites in the Working Set, including the constructor calls.

Designation: The piece of code for the call site.

Special cases: For the dummy init method of each class (see Method) there is an implicit invocation of the dummy init method for its superclass. It is designated as Super init method call for type + <the short-name of the class>.

Examples:
Arrays.sort(sequence)
new HashMap()
Super init method call for type HashMap

Method

Meaning: The set of all methods and constructors in the Working Set.

Designation: <The full-qualified name of the method> + "()" if it has no parameters, or <the full-qualified name of the method> + "(...)" if it has one or more parameters.

Special cases:
  • For each class there is a special dummy init method that correspond to the code in the implicit constructor. It is assumed that all the code in the fields and class initializers of this class is being executed in this dummy init method. Method is designated as Init method for type + <the short-name of the class>.
  • If the method can't be resolved by Eclipse due to severe compilation errors, it is designated as Unresolved method.
Examples:
java.lang.Runnable.run()
java.util.HashMap.put(...)
Init method for type MyClass

Object

Meaning: The set of all class instances, arrays instances and primitive values (literals) in the Working Set. All arithmetical expressions are also considered as objects, because SourceGlider is unable to analyze the structure of arithmetical expressions.

Designation: The piece of code for the object.

Special cases:
  • Arrays initializers are considered as objects.
  • Enum constants are considered as objects.
  • Each non-void external call site is considered as an external object, because SourceGlider can't discover, which objects the calling method may return.
  • For each external call site all its declared exceptions are considered as external objects, because SourceGlider can't prove, whether these exceptions will be actually thrown by an external method or not.
  • Each external field access (e.g. System.out) is considered as an external object, because SourceGlider can't understand, which values it may refer to.
  • If some particular method is never called in the Working Set, SourceGlider assumes that it is an "entry"-method, and all its formal parameters are considered as external objects.
  • If some external object is an array or container, it is considered to have special dummy elements, designated by "[designation for external array object]";
Examples:
new MyClass()
"message"
null
(index + 1) * 2
[Array.newInstance()]

Package

Meaning: The set of all packages in the Working Set.

Designation: The full-qualified name of the package.

Special cases: Types not belonging to any package are assumed to belong to the special package Default package.

Examples:
java.lang
org.eclipse.ui
Default package

Package usage

Meaning: The set of all references to the packages.

Designation: The piece of code for the package reference. Note that if there are several references to the same package, each of them will represent an individual Package usage.

Examples:
java
lang
eclipse

Property

Meaning: All kinds of modifiers (e.g. public, static, final, etc), field/local, constructor/method, type/interface flags, deprecated attributes, generic properties, etc.

Designation: The name of the property.

Examples:
public
final
deprecated

Statement

Meaning: The set of all statements in the Working Set. Statements are used only in Impact Analysis.

Designation: The piece of code for the statement, including the trailing semicolon.

Special cases:
  • The conditions for if, while, do and for constructions are considered as an individual statements.
  • The field initializers are also considered as the statements, although they don't belong to any method.
Examples:
int field = 1;
Arrays.sort( buffer );
while (i <= n)

Thread

Meaning: The set of all threads in the Working Set. Threads are being detected by the set of heuristics, some of which can be configured in the Threads Filters. In some of theses heuristics threads are represented by the class instances (e.g. new Thread() {...). SourceGlider also assumes that each method public static void main(String[] args) represents the separate thread.

Designation: The special name of the thread, if one of filters criteria holds, the piece of code for the class instance, or the concrete main method.

Examples:
Swing UI Thread
Java GC Thread
new Thread( "My Thread" ) {...
MyClass.main(...)

Type

Meaning: The set of all classes, interfaces and enums in the Working Set, including the member, local, anonymous and primitive types.

Designation: The full-qualified name of the type, or the piece of code for the type declaration, if it is anonymous.

Special cases: If the type can't be resolved by Eclipse due to severe compilation errors, it is designated as Unresolved type.

Examples:
int
java.lang.Runnable
new Runnable() {...

Type usage

Meaning: The set of all references to the classes, interfaces, enums and primitive types.

Designation: The piece of code for the type reference. Note that if there are several references to the same type, each of them will represent an individual Type usage.

Examples:
int
HashMap

Variable

Meaning: The set of all fields, local variables and formal parameters in the Working Set.

Designation: The name of the variable.

Special cases:
  • Each class has the corresponding this variable, which points to the instances of this class. It is designated as This variable for type + <the short-name of the class>.
  • If the variable can't be resolved by Eclipse due to severe compilation errors, it is designated as Unresolved variable.
  • For convenience, all the array access expressions are considered as the special kinds of variables. They are called Array (container) Elements and are designated as the piece of code (e.g. array[i]). Since SourceGlider treats the container classes as plain arrays, container access expressions will also be variables (e.g. vector.get( 1 )). You can configure, which containers will be treated as arrays, in Arrays (Containers) Filters.
  • Since SourceGlider represents thread monitors as variables that hold the monitor objects, the two special variables are introduced for convenience: Monitor for instance of + <the short-name of the type> and Static monitor for type + <the short-name of the type>. They correspond to the types, which hold the monitor objects, when the synchronized methods are called.
  • For convenience, all Objects have the corresponding variables, which are used in the Holders queries. They are designated the same way as the objects.
Examples:
index
buffer[i]
This variable for type MyClass
Monitor for instance of MyClass

Variable usage

Meaning: The set of all references to the fields, local variables and formal parameters in the Working Set.

Designation: The piece of code for the variable reference. Note that if there are several references to the same variable, each of them will represent an individual Variable usage.

Examples:
field
index

Others

The Java Elements Types listed below have no Queries and Metrics applicable to them, but can appear as the result types of some Queries.

Big integer
Integer
Method signature
Timestamp

Analysis Profiles

This part provides the list of all available Analysis Profiles. For each Analysis Profile there is a list of its Analysis Types with corresponding options.

Structure Metrics

Structure Metrics profile evaluates only one Analysis Type: Structure Metrics Analysis. The analysis is extremely fast and low on memory. Choose this profile, when you need to evaluate only the structure metrics.

Analysis Types computed:

Structure Metrics

Dependencies+

Dependencies+ profile evaluates the dependencies and all the basic profiles (Types, Objects, Callees, etc). It does not include nor Points To (Equals) Analysis, nor its outcome, nor Impact Analysis. It is quite fast and low on memory. Choose this profile, when you need to evaluate the dependencies, but you are not going to dig into the variables and objects behavior.

Analysis Types computed:

Types Analysis
Dependencies Analysis
Callees Analysis
Structure Metrics

Points To+

Points To+ profile evaluates the full set of analyses except for Impact Analysis. Choose this profile, when you need to discover your code thoroughly, but you are not going to use the impact info.

Analysis Types computed:

Types Analysis
Objects Analysis
Dependencies Analysis
Callees Analysis
Structure Metrics
Points To (Equals) Analysis
Actual Type Analysis
Actual Callees Analysis
Threads Analysis

Options set:

Handle arrays (in Points To): on
Handle exceptions (in Points To): on

Points To (light)+

Points To (light)+ profile is slightly less comprehensive than Points To+ profile, but is still very powerful. It does not consider arrays and exceptions during evaluation of points-to info. This profile is much faster and lower on memory, than Points To+. Choose this profile, when you need to discover your code thoroughly, but your code is very large to perform the Points To+ on it.

Analysis Types computed:

Types Analysis
Objects Analysis
Dependencies Analysis
Callees Analysis
Structure Metrics
Points To (Equals) Analysis

Options set:

Handle arrays (in Points To): off
Handle exceptions (in Points To): off

Impact+

Impact+ profile evaluates the full impact info and all the basic profiles (Types, Objects, Callees, Dependencies, etc). Choose this profile, when you want to discover thoroughly the impact of you code, but you are not going to dig into the variables and objects behavior.

Analysis Types computed:

Types Analysis
Objects Analysis
Dependencies Analysis
Callees Analysis
Structure Metrics
Impact Analysis

Options set:

Evaluate Backward Impact: on
Evaluate Forward Impact: on
Evaluate Slices: on
Evaluate Traces: on

Impact (light)+

Impact (light)+ profile is slightly less comprehensive than Impact+ profile: it doesn't evaluate the forward impact. It is faster than Impact+ and lower on memory. Choose this profile, when you want to discover the backward impact of you code.

Analysis Types computed:

Types Analysis
Objects Analysis
Dependencies Analysis
Callees Analysis
Structure Metrics
Impact Analysis

Options set:

Evaluate Backward Impact: on
Evaluate Forward Impact: off
Evaluate Slices: on
Evaluate Traces: on

Backward Traces+

Backward Traces+ profile is the shortest variation of Impact+ profile. It evaluates only the backward traces and all the basic profiles (Types, Objects, Callees, Dependencies, etc). Choose this profile, when you want to discover the backward impact of you code, but your code is very large to perform the full Impact+ on it.

Analysis Types computed:

Types Analysis
Objects Analysis
Dependencies Analysis
Callees Analysis
Structure Metrics
Impact Analysis

Options set:

Evaluate Backward Impact: on
Evaluate Forward Impact: off
Evaluate Slices: off
Evaluate Traces: on

Analysis Types

This part provides the list of all available Analysis Types. For each Analysis Type there is a list of prerequisite Analysis Types and the list of Queries generated by this Analysis Type.

Default

The dataflow information described here is computed by each Analysis Type, except for Structure Metrics Analysis.

  • The basic declaration info for methods, types and variables.
  • The basic structure info for methods, types and packages.
  • The usages for variables, types and packages
  • The properties for variables, methods and types (e.g. abstract, final, public).

Below is the full list of basic Queries:

Author:
Files:
Files
Invocation site:
Declaration:
Invoking expression
Actual parameters
Result type
Method:
Declaration:
Properties
Declaring class
Parameters
Return type
Declared exceptions
Structure/Dependencies:
Local variables
Locally created objects
Package:
Structure:
Parent package
Subpackages
Declared types
Usages:
Usages
Package usage:
Referred package:
Referred package
Property:
Types:
Types
Methods:
Methods
Variables:
Variables
Type:
Declaration:
Properties
Interfaces extended
Direct superclass
Interfaces implemented
Declaring type
Structure:
Fields
Constructors
Nested classes
Hierarchy:
Direct implementing classes
Direct subinterfaces
Direct subclasses
Usages:
Exact type usages
Structure metrics:
Lines of code
Size
Last modified
Number of types
Number of methods
Number of fields
Number of statements
Authors:
Authors
Variable:
Declaration:
Properties
Declaring class
Declaring method
Type
Usages:
Stores
Array (container) accesses
Array (container) stores
Variable usage:
Referred variable:
Referred variable

Structure Metrics

Structure Metrics Analysis calculates the structure metrics for all the parts of the program. It helps to measure the properties of the source code and monitor its quality.

  • For each program folder and type:
    • it counts the total size and the number of LOC (lines of code).
    • it counts the total number of fields, statements, methods and types.
    • it evaluates the latest last modified time of all the files in it.
    • it lists all the authors that contributed to this part of source code (they are taken from @author tags).
  • For each author it counts his investment to the development of the whole program: the number of created files, methods and statements, total LOC, size of code and the time of the last modified file.

Below are the Queries generated by Structure Metrics:

Author:
Metrics:
Lines of code
Total size
Last modified
Number of files
Number of types
Number of methods
Number of fields
Number of statements
Folder:
Structure metrics:
Lines of code
Total size
Last modified
Number of files
Number of types
Number of methods
Number of fields
Number of statements
Authors:
Authors

Types Analysis

Types Analysis computes the basic information about classes and interfaces in the program.

  • It evaluates all the recursive predecessors and successors in the type inheritance hierarchy.
  • It shows the package structure of the program, finds types that can be accessed from outside.
  • It searches the usages for each type and variable.

Below are the Queries generated by Types Analysis:

Package:
Structure:
Public types (incl. subpackages)
Type:
Declaration:
Declaring package
Structure:
Other methods
Locally created objects
Hierarchy:
All supertypes
All subtypes
Usages:
Overloaded type usages
Type usage:
Referred type:
Referred type
Variable:
Usages:
Accesses
Other usages

Objects Analysis

Depends on: Types Analysis

Objects Analysis computes the basic information about class instances and primitive values (literals).

  • It separates the "internal" and "external" objects and evaluates their types.
  • It evaluates the types of arrays elements and searches the instantiations for each type.

Below are the Queries generated by Objects Analysis:

Object:
Declaration:
Type
Arrays (containers) elements type
Type:
Usages:
Exact instantiations
Overloaded instantiations
Variable:
Declaration:
Array (container) elements type

Dependencies Analysis

Depends on: Types Analysis

Dependencies Analysis evaluates the external dependencies for all the methods, types and packages in the program and reveals its side effects.

  • For each method and class it searches the external variables, accessed or written by it. It helps to understand what does this method or class need and to reveal its side effects.
  • For each class and package it evaluates its class and package dependencies. It helps to understand the high-level design of the program, find common design patterns and improve the code by refactoring.

Below are the Queries generated by Dependencies Analysis:

Method:
Structure/Dependencies:
Non-local variables usages
Non-local variables stores
Package:
Usages:
User types
User packages
Dependencies:
External types used
Packages used
Packages used (incl. subpackages)
Type:
Dependencies:
External invocations
External variables usages
External variables stores
External types usages
External packages usages
Usages:
User packages

Callees Analysis

Depends on: Types Analysis

Callees Analysis computes the Call Graph of the program.

  • For each call site it reveals all possible methods that may be invoked here.
  • For each method it shows where it can be invoked.
  • For each method it displays all its overloaded and overloading methods.

Below are the Queries generated by Callees Analysis:

Invocation site:
Callees:
Callees
Method:
Hierarchy:
Overridden parent methods
Overriding methods
Usages:
Invocations
Overridden invocations

Points To (Equals) Analysis

Depends on: Objects Analysis, Callees Analysis
Available options: Handle arrays (in Points To), Handle exceptions (in Points To)

Points To (Equals) Analysis is one of the major analyses in SourceGlider. It propagates the points-to dataflow information through all the Java constructions: assignments, types, method calls/returns, fields, arrays, exceptions, etc.

  • For each variable and field it understands which class instances it may refer to or which primitive values (literals) it may be equal to.
  • For each non-void method it shows which class instances or primitive values it may return.
  • For each array it reveals which class instances or primitive values it may hold.
  • For each method it understands which explicit and implicit exceptions it may throw and where they are thrown. The information about exceptions is taken from the source code of this method and all the methods that are called from this method.
  • For each class instance and primitive value it shows where it is used and what variables, arrays and methods may hold it.

Below are the Queries generated by Points To (Equals) Analysis:

Method:
Result points-to (equals) & types:
Values
Unhandled exceptions:
Unhandled exceptions
Object:
Usages:
Arrays (containers) accesses
Arrays (containers) stores
Accesses
Other usages
Holders:
Returning methods
Holder variables
Holder arrays (containers)
Arrays (containers) elements & types:
Direct elements
Scalar elements
Key elements (for map containers)
Variable:
Points-to (equals) & types:
Values
Arrays (containers) elements & types:
Direct elements
Scalar elements
Key elements (for map containers)

Actual Type Analysis

Depends on: Points To (Equals) Analysis

Actual Type Analysis uses the Points To (Equals) Analysis and refines the types information using the points-to dataflow information.

  • For each variable and field it understands its actual type: the type of the values that it may refer to or be equal to. This type is in fact more precise than the declaring type, it may reveal the actual meaning of the variable.
  • For each non-void method it shows the actual types of its results: the type of the values that this method may return.
  • For each array it reveals the actual type of its elements.

Below are the Queries generated by Actual Type Analysis:

Method:
Result points-to (equals) & types:
Types
Object:
Arrays (containers) elements & types:
Direct element types
Scalar element types
Key element types
Variable:
Points-to (equals) & types:
Types
Arrays (containers) elements & types:
Direct element types
Scalar element types
Key element types

Actual Callees Analysis

Depends on: Actual Type Analysis

Actual Callees Analysis uses the Points To (Equals) Analysis and refines the Call Graph using the points-to dataflow information.

  • For each call site it understands what actual methods are invoked here. It is extremely useful in the places, where the abstract interface methods are invoked.
  • For each method it shows where it is actually invoked. For example it can display all the actual call sites for the overloaded java.lang.Runnable.run() method of particular java.lang.Runnable instance, while all other browsers will show senseless results - all the call sites for all java.lang.Runnable usages in the whole program.
  • It computes the complete Call Graphs using the Actual Callees information
  • For each non-void call site it understands which class instances or primitive values (literals) it may obtain.
  • For each call site it reveals which explicit and implicit exceptions it may throw and where they are thrown.

Below are the Queries generated by Actual Callees Analysis:

Invocation site:
Callees:
Callees
Result points-to (equals) & types:
Values
Types
Unhandled exceptions:
Unhandled exceptions
Method:
Usages:
Invocations
Impossible invocations
Call graph:
Callers
Callees
Object:
Usages:
Method invocation results

Threads Analysis

Depends on: Actual Callees Analysis

Threads Analysis searches all the threads in the program.

  • For each method it understands in which threads it may be running.

  • For each found thread it computes its name and the set of all methods that can be running in it.
  • For each method it searches all the monitors that it may own in some particular thread.

Threads Analysis introduces the notions of Possible and Mandatory monitors.

  • Possible monitor is the monitor that method may own in some threads.
  • Mandatory monitor is the monitor that method owns in all possible threads.

Below are the Queries generated by Threads Analysis:

Invocation site:
Threads & Monitors:
Threads
Callers' threads
Mandatory monitors
Possible monitors
Method:
Threads & Monitors:
Threads
Callers' threads
Mandatory monitors
Possible monitors
Thread:
Name:
Name
Methods:
Methods

Impact Analysis

Depends on: Objects Analysis, Callees Analysis
Available options: Evaluate Backward Impact, Evaluate Forward Impact

Impact Analysis is one of the major analyses in SourceGlider. It understands which statements depend on the other ones and propagates this information through the whole program.

  • It reveals all the statements in the program affected by the value of particular variable or field.
  • It displays all the statements in the program that may influence the value of particular variable or field.
  • It shows all the conditional statements that may influence whether control reaches the particular statement or not.

Impact analysis introduces the notions of Slices and Traces.

  • Slice is the set of statements that are somehow dependent on some variable or affect its value. In this case all possible dependencies are taken into account, therefore the total size of the slice can be very large.
  • Trace is almost the same as the slice, but only the direct explicit dependencies are considered. The size of the trace is much less than the size of the slice, what makes it easier to understand.

Below are the Queries generated by Impact Analysis:

Object:
Trace & Slice:
Forward trace
Forward slice
Statement:
Control dependence:
Control dependence
Variable:
Slice:
Backward
Forward
Trace:
Backward
Forward

Queries

This part provides the full set of Queries available in SourceGlider. The list is divided by Java Elements Types, to which these Queries are applicable. For each Query its Type of Result and required Analysis Type are mentioned.

Author

Below is the list of all Queries applicable to the type "Author", divided by categories:

Files:
Files:
Type of result: Type
Required Analysis Type: Default
Metrics:
Lines of code:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Total size:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Last modified:
Type of result: Timestamp
Required Analysis Type: Structure Metrics
Number of files:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Number of types:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Number of methods:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Number of fields:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Number of statements:
Type of result: Big integer
Required Analysis Type: Structure Metrics

Folder

Below is the list of all Queries applicable to the type "Folder", divided by categories:

Structure metrics:
Lines of code:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Total size:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Last modified:
Type of result: Timestamp
Required Analysis Type: Structure Metrics
Number of files:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Number of types:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Number of methods:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Number of fields:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Number of statements:
Type of result: Big integer
Required Analysis Type: Structure Metrics
Authors:
Authors:
Type of result: Author
Required Analysis Type: Structure Metrics

Invocation site

Below is the list of all Queries applicable to the type "Invocation site", divided by categories:

Declaration:
Invoking expression:
Type of result: Variable
Required Analysis Type: Default
Actual parameters:
Type of result: Variable
Required Analysis Type: Default
Result type:
Type of result: Type
Required Analysis Type: Default
Callees:
Callees:
Type of result: Method
Required Analysis Type: Actual Callees Analysis or Callees Analysis
Result points-to (equals) & types:
Values:
Type of result: Object
Required Analysis Type: Actual Callees Analysis
Types:
Type of result: Type
Required Analysis Type: Actual Callees Analysis
Unhandled exceptions:
Unhandled exceptions:
Type of result: Type, Object
Required Analysis Type: Actual Callees Analysis
Threads & Monitors:
Threads:
Type of result: Thread
Required Analysis Type: Threads Analysis
Callers' threads:
Type of result: Method, Thread
Required Analysis Type: Threads Analysis
Mandatory monitors:
Type of result: Variable
Required Analysis Type: Threads Analysis
Possible monitors:
Type of result: Variable
Required Analysis Type: Threads Analysis

Method

Below is the list of all Queries applicable to the type "Method", divided by categories:

Declaration:
Properties:
Type of result: Property
Required Analysis Type: Default
Declaring class:
Type of result: Type
Required Analysis Type: Default
Parameters:
Type of result: Variable
Required Analysis Type: Default
Return type:
Type of result: Type
Required Analysis Type: Default
Declared exceptions:
Type of result: Type
Required Analysis Type: Default
Hierarchy:
Overridden parent methods:
Type of result: Method
Required Analysis Type: Callees Analysis
Overriding methods:
Type of result: Method
Required Analysis Type: Callees Analysis
Structure/Dependencies:
Local variables:
Type of result: Variable
Required Analysis Type: Default
Non-local variables usages:
Type of result: Variable usage
Required Analysis Type: Dependencies Analysis
Non-local variables stores:
Type of result: Variable usage
Required Analysis Type: Dependencies Analysis
Locally created objects:
Type of result: Object
Required Analysis Type: Default
Usages:
Invocations:
Type of result: Invocation site
Required Analysis Type: Actual Callees Analysis or Callees Analysis
Impossible invocations:
Type of result: Invocation site
Required Analysis Type: Actual Callees Analysis
Overridden invocations:
Type of result: Invocation site
Required Analysis Type: Callees Analysis
Call graph:
Callers:
Type of result: Method, Invocation site
Required Analysis Type: Actual Callees Analysis
Callees:
Type of result: Invocation site, Method
Required Analysis Type: Actual Callees Analysis
Result points-to (equals) & types:
Values:
Type of result: Object
Required Analysis Type: Points To (Equals) Analysis
Types:
Type of result: Type
Required Analysis Type: Actual Type Analysis
Unhandled exceptions:
Unhandled exceptions:
Type of result: Type, Object
Required Analysis Type: Points To (Equals) Analysis
Threads & Monitors:
Threads:
Type of result: Thread
Required Analysis Type: Threads Analysis
Callers' threads:
Type of result: Method, Thread
Required Analysis Type: Threads Analysis
Mandatory monitors:
Type of result: Variable
Required Analysis Type: Threads Analysis
Possible monitors:
Type of result: Variable
Required Analysis Type: Threads Analysis
Javadoc:

Object

Below is the list of all Queries applicable to the type "Object", divided by categories:

Declaration:
Type:
Type of result: Type
Required Analysis Type: Objects Analysis
Arrays (containers) elements type:
Type of result: Type
Required Analysis Type: Objects Analysis
Usages:
Arrays (containers) accesses:
Type of result: Variable usage
Required Analysis Type: Points To (Equals) Analysis
Arrays (containers) stores:
Type of result: Variable usage
Required Analysis Type: Points To (Equals) Analysis
Accesses:
Type of result: Variable usage
Required Analysis Type: Points To (Equals) Analysis
Method invocation results:
Type of result: Invocation site
Required Analysis Type: Actual Callees Analysis
Other usages:
Type of result: Variable usage
Required Analysis Type: Points To (Equals) Analysis
Holders:
Returning methods:
Type of result: Method
Required Analysis Type: Points To (Equals) Analysis
Holder variables:
Type of result: Variable
Required Analysis Type: Points To (Equals) Analysis
Holder arrays (containers):
Type of result: Object
Required Analysis Type: Points To (Equals) Analysis
Arrays (containers) elements & types:
Direct elements:
Type of result: Object
Required Analysis Type: Points To (Equals) Analysis
Scalar elements:
Type of result: Object
Required Analysis Type: Points To (Equals) Analysis
Key elements (for map containers):
Type of result: Object
Required Analysis Type: Points To (Equals) Analysis
Direct element types:
Type of result: Type
Required Analysis Type: Actual Type Analysis
Scalar element types:
Type of result: Type
Required Analysis Type: Actual Type Analysis
Key element types:
Type of result: Type
Required Analysis Type: Actual Type Analysis
Trace & Slice:
Forward trace:
Type of result: Statement
Required Analysis Type: Impact Analysis
Forward slice:
Type of result: Statement
Required Analysis Type: Impact Analysis

Package

Below is the list of all Queries applicable to the type "Package", divided by categories:

Structure:
Parent package:
Type of result: Package
Required Analysis Type: Default
Subpackages:
Type of result: Package
Required Analysis Type: Default
Declared types:
Type of result: Type
Required Analysis Type: Default
Public types (incl. subpackages):
Type of result: Type
Required Analysis Type: Types Analysis
Usages:
Usages:
Type of result: Package usage
Required Analysis Type: Default
User types:
Type of result: Type
Required Analysis Type: Dependencies Analysis
User packages:
Type of result: Package
Required Analysis Type: Dependencies Analysis
Dependencies:
External types used:
Type of result: Type
Required Analysis Type: Dependencies Analysis
Packages used:
Type of result: Package
Required Analysis Type: Dependencies Analysis
Packages used (incl. subpackages):
Type of result: Package
Required Analysis Type: Dependencies Analysis

Package usage

Below is the list of all Queries applicable to the type "Package usage", divided by categories:

Referred package:
Referred package:
Type of result: Package
Required Analysis Type: Default

Property

Below is the list of all Queries applicable to the type "Property", divided by categories:

Types:
Types:
Type of result: Type
Required Analysis Type: Default
Methods:
Methods:
Type of result: Method
Required Analysis Type: Default
Variables:
Variables:
Type of result: Variable
Required Analysis Type: Default

Statement

Below is the list of all Queries applicable to the type "Statement", divided by categories:

Control dependence:
Control dependence:
Type of result: Statement
Required Analysis Type: Impact Analysis

Thread

Below is the list of all Queries applicable to the type "Thread", divided by categories:

Name:
Name:
Type of result: Object
Required Analysis Type: Threads Analysis
Methods:
Methods:
Type of result: Method
Required Analysis Type: Threads Analysis

Type

Below is the list of all Queries applicable to the type "Type", divided by categories:

Declaration:
Properties:
Type of result: Property
Required Analysis Type: Default
Declaring package:
Type of result: Package
Required Analysis Type: Types Analysis
Interfaces extended:
Type of result: Type
Required Analysis Type: Default
Direct superclass:
Type of result: Type
Required Analysis Type: Default
Interfaces implemented:
Type of result: Type
Required Analysis Type: Default
Declaring type:
Type of result: Type
Required Analysis Type: Default
Structure:
Fields:
Type of result: Variable
Required Analysis Type: Default
Constructors:
Type of result: Method
Required Analysis Type: Default
Other methods :
Type of result: Method
Required Analysis Type: Types Analysis
Nested classes:
Type of result: Type
Required Analysis Type: Default
Locally created objects:
Type of result: Object
Required Analysis Type: Types Analysis
Hierarchy:
Direct implementing classes:
Type of result: Type
Required Analysis Type: Default
Direct subinterfaces:
Type of result: Type
Required Analysis Type: Default
Direct subclasses:
Type of result: Type
Required Analysis Type: Default
All supertypes:
Type of result: Type
Required Analysis Type: Types Analysis
All subtypes:
Type of result: Type
Required Analysis Type: Types Analysis
Dependencies:
External invocations:
Type of result: Invocation site
Required Analysis Type: Dependencies Analysis
External variables usages:
Type of result: Variable usage
Required Analysis Type: Dependencies Analysis
External variables stores:
Type of result: Variable usage
Required Analysis Type: Dependencies Analysis
External types usages:
Type of result: Type usage
Required Analysis Type: Dependencies Analysis
External packages usages:
Type of result: Package usage
Required Analysis Type: Dependencies Analysis
Usages:
Exact instantiations:
Type of result: Object
Required Analysis Type: Objects Analysis
Overloaded instantiations:
Type of result: Object
Required Analysis Type: Objects Analysis
Exact type usages:
Type of result: Type usage
Required Analysis Type: Default
Overloaded type usages:
Type of result: Type usage
Required Analysis Type: Types Analysis
User packages:
Type of result: Package
Required Analysis Type: Dependencies Analysis
Structure metrics:
Lines of code:
Type of result: Big integer
Required Analysis Type: Default
Size:
Type of result: Big integer
Required Analysis Type: Default
Last modified:
Type of result: Timestamp
Required Analysis Type: Default
Number of types:
Type of result: Big integer
Required Analysis Type: Default
Number of methods:
Type of result: Big integer
Required Analysis Type: Default
Number of fields:
Type of result: Big integer
Required Analysis Type: Default
Number of statements:
Type of result: Big integer
Required Analysis Type: Default
Authors:
Authors:
Type of result: Author
Required Analysis Type: Default
Javadoc:

Type usage

Below is the list of all Queries applicable to the type "Type usage", divided by categories:

Referred type:
Referred type:
Type of result: Type
Required Analysis Type: Types Analysis

Variable

Below is the list of all Queries applicable to the type "Variable", divided by categories:

Declaration:
Properties:
Type of result: Property
Required Analysis Type: Default
Declaring class:
Type of result: Type
Required Analysis Type: Default
Declaring method:
Type of result: Method
Required Analysis Type: Default
Type:
Type of result: Type
Required Analysis Type: Default
Array (container) elements type:
Type of result: Type
Required Analysis Type: Objects Analysis
Usages:
Stores:
Type of result: Variable usage
Required Analysis Type: Default
Array (container) accesses:
Type of result: Variable usage
Required Analysis Type: Default
Array (container) stores:
Type of result: Variable usage
Required Analysis Type: Default
Accesses:
Type of result: Variable usage
Required Analysis Type: Types Analysis
Other usages:
Type of result: Variable usage
Required Analysis Type: Types Analysis
Points-to (equals) & types:
Values:
Type of result: Object
Required Analysis Type: Points To (Equals) Analysis
Types:
Type of result: Type
Required Analysis Type: Actual Type Analysis
Arrays (containers) elements & types: