模块 jdk.jshell

类 SourceCodeAnalysis

java.lang.Object
jdk.jshell.SourceCodeAnalysis

public abstract class SourceCodeAnalysis extends Object
为源代码输入提供分析实用程序。提供更丰富的交互体验的可选功能。包括完成分析:输入的是完整的代码片段吗?我需要提示更多输入吗?添加分号会使它完整吗?是否有不止一个片段?等。还包括完成建议,可能会在制表符完成中使用。
自从:
9
  • 方法详情

    • analyzeCompletion

      public abstract SourceCodeAnalysis.CompletionInfo  analyzeCompletion(String  input)
      给定一个输入字符串,找到第一个代码片段(一个语句、定义、导入或表达式)并评估它是否完整。
      参数:
      input - 输入源字符串
      返回:
      具有位置和完整性信息的 CompletionInfo 实例
    • completionSuggestions

      public abstract List <SourceCodeAnalysis.Suggestion > completionSuggestions(String  input, int cursor, int[] anchor)
      计算给定输入的可能后续行动。使用来自当前 JShell 状态的信息(包括类型信息)来过滤建议。
      参数:
      input - 到目前为止的用户输入
      cursor - 光标在给定 input 文本中的当前位置
      anchor - 传出参数 - 当一个选项完成时,锚点和光标之间的文本将被删除并替换为给定的选项
      返回:
      给定输入的候选延续列表。
    • documentation

      public abstract List <SourceCodeAnalysis.Documentation > documentation(String  input, int cursor, boolean computeJavadoc)
      计算给定用户输入的文档。当多个元素与用户的输入匹配时(如重载方法),可能会返回多个 Documentation 对象。
      参数:
      input - 用户到目前为止编写的片段
      cursor - 光标在给定 input 文本中的当前位置
      computeJavadoc - 如果除了签名之外还应计算给定输入的 javadoc,则为真
      返回:
      给定用户输入的文档,如果多个元素与输入匹配,则返回多个 Documentation 对象。
    • analyzeType

      public abstract String  analyzeType(String  code, int cursor)
      推断给定表达式的类型。表达式从 code 的开头跨越到给定的 cursor 位置。如果无法推断表达式的类型,则返回 null。
      参数:
      code - 应该推断其类型的表达式
      cursor - 给定代码中的当前光标位置
      返回:
      推断的类型,如果无法推断则为 null
    • listQualifiedNames

      public abstract SourceCodeAnalysis.QualifiedNames  listQualifiedNames(String  code, int cursor)
      列出紧靠给定光标位置左侧的给定代码中已知的简单名称的限定名称。通过检查 eval 使用的类路径收集限定名称(请参阅 JShell.addToClasspath(java.lang.String) )。
      参数:
      code - 应为其计算候选限定名称的表达式
      cursor - 给定代码中的当前光标位置
      返回:
      已知的合格名称
    • wrapper

      public abstract SourceCodeAnalysis.SnippetWrapper  wrapper(Snippet  snippet)
      返回 Snippet 的包装器信息。包装器会随着环境的变化而变化,因此在不同时间调用此方法可能会产生不同的结果。
      参数:
      snippet - 从中检索包装器的 Snippet
      返回:
      包装纸上的信息
    • wrappers

      public abstract List <SourceCodeAnalysis.SnippetWrapper > wrappers(String  input)
      返回输入源字符串中片段的包装器信息。

      格式错误和不完整的片段的包装器信息也会生成包装器。该列表按代码段遇到顺序排列。包装器会随着环境的变化而变化,因此在不同时间调用此方法可能会产生不同的结果。

      输入应该是一个完整的源代码片段,即一个表达式、语句、变量声明、方法声明、类声明或导入。要将任意输入分解为单独的完整片段,请使用 analyzeCompletion(String)

      包装器可能与 wrapper(Snippet) 返回的包装器不匹配,如果源转换为 Snippet

      参数:
      input - 从中生成包装器的源输入
      返回:
      包装器信息列表
    • sourceToSnippets

      public abstract List <Snippet > sourceToSnippets(String  input)
      将片段的源代码转换为 Snippet 对象(或在某些 var 声明的情况下为 Snippet 对象列表,例如:int x, y, z;)。不安装片段:其他片段无法访问声明;不添加进口。不执行片段。

      可以在 Snippet 对象上进行查询。 Snippet.id() 将是 "*UNASSOCIATED*"。返回的片段与 JShell 实例无关,因此尝试将它们传递给 JShell 方法将抛出 IllegalArgumentException 。它们不会出现在片段查询中——例如,JShell.snippets()

      对输入的限制如 JShell.eval 中所述。

      仅执行初步编译,足以构建 Snippet 。已知错误的片段将返回为 ErroneousSnippet ,其他片段可能有错误也可能没有错误。

      参数:
      input - 要转换的输入字符串
      返回:
      通常是 Snippet 的单例列表,但可能为空或多个
      抛出:
      IllegalStateException - 如果 JShell 实例已关闭。
    • dependents

      public abstract Collection <Snippet > dependents(Snippet  snippet)
      返回 Snippet 的集合,如果给定的 Snippet 已更新,则可能需要更新。返回的集合被设计为具有包容性,可能包含许多误报。
      参数:
      snippet - 请求其家属的 Snippet
      返回:
      依赖的集合
    • highlights

      public abstract List <SourceCodeAnalysis.Highlight > highlights(String  snippet)
      返回 Highlight 的集合,可用于为给定的片段着色。

      返回的 Highlight 不重叠,并按其起始位置排序。

      参数:
      snippet - 应为其计算 Highlight 的片段
      返回:
      计算出的 Highlight s。
      自从:
      19