java.lang.Object
org.openrewrite.analysis.dataflow.internal.csv.AccessPath

public class AccessPath extends Object
A structured representation of a CodeQL-style data-flow access path such as Argument[0], Argument[-1].Element, Argument[0].Parameter[1] or Argument[1].ReturnValue.

An access path is parsed into a AccessPath.Root (an argument position or the method return value) and an optional callback component describing flow into a functional argument's parameter (AccessPath.CallbackKind.PARAMETER) or out of a functional argument's return value (AccessPath.CallbackKind.RETURN_VALUE). This is what enables higher-order ("lambda call") flow.

Content components (Element, ArrayElement, MapKey, MapValue, Field[...], SyntheticField[...]) are collapsed onto their container: this analysis is not content/field sensitive, so Argument[-1].Element is treated as Argument[-1]. This is an over-approximation consistent with the engine's whole-value granularity.

  • Constructor Details

    • AccessPath

      public AccessPath()
  • Method Details