java.lang.Object
jdk.jshell.SourceCodeAnalysis
为源代码输入提供分析实用程序。提供更丰富的交互体验的可选功能。包括完成分析:输入的是完整的代码片段吗?我需要提示更多输入吗?添加分号会使它完整吗?是否有不止一个片段?等。还包括完成建议,可能会在制表符完成中使用。
- 自从:
- 9
-
内部类总结
内部类修饰符和类型类描述static enum可用于派生着色的 span 属性。static enum描述给定输入的完整性。static interfaceanalyzeCompletion(String input)的结果。static interface继续给定用户输入的候选人的文档。static final record将可用于着色的属性分配给片段内的跨度。static final class可能的限定名称列表。static interface将一段 Java 源代码包装到有效的顶级 Java 源代码中。static interface继续给定用户输入的候选者。 -
方法总结
修饰符和类型方法描述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 List<SourceCodeAnalysis.Highlight>highlights(String snippet) 返回Highlight的集合,可用于为给定的片段着色。abstract SourceCodeAnalysis.QualifiedNameslistQualifiedNames(String code, int cursor) 列出紧靠给定光标位置左侧的给定代码中已知的简单名称的限定名称。sourceToSnippets(String input) 将片段的源代码转换为Snippet对象(或在某些 var 声明的情况下为Snippet对象列表,例如:int x, y, z;)。abstract SourceCodeAnalysis.SnippetWrapper返回Snippet的包装器信息。abstract List<SourceCodeAnalysis.SnippetWrapper>返回输入源字符串中片段的包装器信息。
-
方法详情
-
analyzeCompletion
给定一个输入字符串,找到第一个代码片段(一个语句、定义、导入或表达式)并评估它是否完整。- 参数:
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
推断给定表达式的类型。表达式从code的开头跨越到给定的cursor位置。如果无法推断表达式的类型,则返回 null。- 参数:
code- 应该推断其类型的表达式cursor- 给定代码中的当前光标位置- 返回:
- 推断的类型,如果无法推断则为 null
-
listQualifiedNames
列出紧靠给定光标位置左侧的给定代码中已知的简单名称的限定名称。通过检查 eval 使用的类路径收集限定名称(请参阅JShell.addToClasspath(java.lang.String))。- 参数:
code- 应为其计算候选限定名称的表达式cursor- 给定代码中的当前光标位置- 返回:
- 已知的合格名称
-
wrapper
返回Snippet的包装器信息。包装器会随着环境的变化而变化,因此在不同时间调用此方法可能会产生不同的结果。- 参数:
snippet- 从中检索包装器的Snippet- 返回:
- 包装纸上的信息
-
wrappers
返回输入源字符串中片段的包装器信息。格式错误和不完整的片段的包装器信息也会生成包装器。该列表按代码段遇到顺序排列。包装器会随着环境的变化而变化,因此在不同时间调用此方法可能会产生不同的结果。
输入应该是一个完整的源代码片段,即一个表达式、语句、变量声明、方法声明、类声明或导入。要将任意输入分解为单独的完整片段,请使用
analyzeCompletion(String)。包装器可能与
wrapper(Snippet)返回的包装器不匹配,如果源转换为Snippet。- 参数:
input- 从中生成包装器的源输入- 返回:
- 包装器信息列表
-
sourceToSnippets
将片段的源代码转换为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
返回Snippet的集合,如果给定的Snippet已更新,则可能需要更新。返回的集合被设计为具有包容性,可能包含许多误报。- 参数:
snippet- 请求其家属的Snippet- 返回:
- 依赖的集合
-
highlights
返回Highlight的集合,可用于为给定的片段着色。返回的
Highlight不重叠,并按其起始位置排序。- 参数:
snippet- 应为其计算Highlight的片段- 返回:
-
计算出的
Highlights。 - 自从:
- 19
-