IntelliJ IDEA 2016.1 Help

Analyzing Data Flow

IntelliJ IDEA provides Dataflow Analysis features to help you with code archeology - better understand the inherited project code, interpret complicated parts of the code, find bottlenecks in the source, and more.

Specifically, Dataflow to/from here features allow you to:

  • See where do values assigned to a variable come from.
  • Find out what are all possible values the variable can have.
  • Find out what are the places this expression\variable\method parameter can flow into.
  • Reveal places where potential NullPointerException can arise.

If you want to trace back the value passed to a parameter at caret, you can create a slice view of the source code using the Analyze | Dataflow to Here command. Moreover, using Analyze | Dataflow from Here command you can find the places an expression can flow into. The results of each dataflow analysis are displayed in the dedicated tabs of the Analyze Dataflow tool window.

To analyze dataflow to/from a symbol

  1. Open the desired file for editing.
  2. Place the caret at the symbol to be analyzed (expression\variable\method parameter).
  3. On the main menu, or on the context menu, choose Analyze | Dataflow to Here or Analyze | Dataflow from Here depending on your purposes.
  4. Specify the analysis scope and select, whether you want to ignore all values coming from the test code.
  5. Click OK. Review the analysis results in the dedicated Analyze Dataflow tool window.

Dataflow Analysis Results

The following sections briefly describe how to "read" the dataflow analysis results.

    Dataflow to Here

    The image below shows an example of the dataflow to here analysis results.

    • The values in this view flow in the following direction: the value for the field String authType in SingleSignonMessage comes from this.authType = authType assignment statement in SingleSignOnMessage.setAuthType() method called from ClusterSingleSignOn.register() method with authType parameter and so on.
    • Expand the tree to dig in the chain of assignments and method calls that lead to the symbol in question.
    • Nodes with gray background denote duplicates (the usages that are already present in the tree in another location).

    To find out what are the possible values a symbol can have, click Group By Leaf Expression button on the main tool bar of the Dataflow tool window.


    Dataflow from Here

    The hierarchical view is similar to the results of dataflow to here analysis, but the values flow in the opposite direction.


    See Also

    Last modified: 13 July 2016