- java.lang.Object
-
- jdk.jshell.SourceCodeAnalysis
-
public abstract class SourceCodeAnalysis extends Object
提供源代码输入的分析实用程序。 提供更丰富的互动体验的可选功能。 包括完成分析:输入是否是完整的代码段? 我需要提示输入更多信息吗? 添加分号会使其完整吗? 有不止一个片段吗? 还包括完成建议,可以在制表完成中使用。- 从以下版本开始:
- 9
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static classSourceCodeAnalysis.Completeness描述给定输入的完整性。static interfaceSourceCodeAnalysis.CompletionInfo结果为analyzeCompletion(String input)。static interfaceSourceCodeAnalysis.Documentation用于继续给定用户输入的候选人的文档。static classSourceCodeAnalysis.QualifiedNames可能的合格名称列表。static interfaceSourceCodeAnalysis.SnippetWrapper将Java源代码片段包装到有效的顶级Java源代码中。static interfaceSourceCodeAnalysis.Suggestion用于继续给定用户输入的候选者。
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 abstract SourceCodeAnalysis.CompletionInfoanalyzeCompletion(String input)给定一个输入字符串,找到第一个代码片段(一个语句,定义,导入或表达式),并评估它是否完整。abstract StringanalyzeType(String code, int cursor)推断给定表达式的类型。abstract List<SourceCodeAnalysis.Suggestion>completionSuggestions(String input, int cursor, int[] anchor)计算给定输入的可能跟踪。abstract Collection<Snippet>dependents(Snippet snippet)返回Snippet的集合,如果给定的Snippet更新,则可能需要更新。abstract List<SourceCodeAnalysis.Documentation>documentation(String input, int cursor, boolean computeJavadoc)计算给定用户输入的文档。abstract SourceCodeAnalysis.QualifiedNameslistQualifiedNames(String code, int cursor)列出给定代码中简单名称的限定名称,直接指定给定光标位置的左侧。abstract SourceCodeAnalysis.SnippetWrapperwrapper(Snippet snippet)返回Snippet的包装信息。abstract List<SourceCodeAnalysis.SnippetWrapper>wrappers(String input)返回输入源字符串中代码段的包装器信息。
-
-
-
方法详细信息
-
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,computeJavadoctrue - 结果
-
给定用户输入的文档,如果多个元素匹配输入,则返回多个
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 - 结果
- 收养家属
-
-