Module  jdk.jshell
软件包  jdk.jshell

Class 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文本 input当前位置
        anchor - 传出参数 - 当选项完成时,锚点和光标之间的文本将被删除并替换为给定的选项
        结果
        给定输入的候选延续列表。
      • documentation

        public abstract List<SourceCodeAnalysis.Documentation> documentation​(String input,
                                                                             int cursor,
                                                                             boolean computeJavadoc)
        计算给定用户输入的文档。 当多个元素与用户的输入匹配时,可能会返回多个Documentation对象(如重载方法)。
        参数
        input - 用户到目前为止写的片段
        cursor - 给定的 input文本 input当前位置
        computeJavadoc - 如果除了签名之外还应该计算给定输入的javadoc, computeJavadoc true
        结果
        给定用户输入的文档,如果多个元素匹配输入,则返回多个 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检索包装的 Snippet
        结果
        包装上的信息
      • wrappers

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

        格式不完整的片段的包装器信息也会生成包装器。 该列表是片段遇到的顺序。 随着环境的变化,包装器会改变,所以在不同时间调用这个方法可能产生不同的结果。

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

        包装器可能不符合由wrapper(Snippet)返回的,源转换为Snippet

        参数
        input - 用于生成包装器的源输入
        结果
        包装信息列表
      • dependents

        public abstract Collection<Snippet> dependents​(Snippet snippet)
        返回Snippet的集合,如果给定的Snippet更新,则可能需要更新。 返回的集合设计为包容性,可能包含许多假阳性。
        参数
        snippet - 要求其家属的 Snippet
        结果
        收养家属