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