- java.lang.Object
-
- jdk.jshell.SourceCodeAnalysis
-
public abstract class SourceCodeAnalysis extends Object
为源代码输入提供分析实用程序。 可选功能,提供更丰富的交互式体验。 包括完成分析:输入是完整的代码片段吗? 我需要提示更多输入吗? 添加分号会使它完整吗? 有不止一个片段吗? 还包括完成建议,可以在制表符完成中使用。- 从以下版本开始:
- 9
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 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
继续给定用户输入的候选者。
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 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 List<Snippet>
sourceToSnippets(String input)
一个片段的源代码转换成一个转换Snippet
对象(或列表Snippet
在一些变种声明的情况下的物体,例如:整数X,Y,Z)。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
- 从中生成包装器的源输入 - 结果
- 包装器信息列表
-
sourceToSnippets
public abstract List<Snippet> sourceToSnippets(String input)
一个片段的源代码转换成一个转换Snippet
对象(或列表Snippet
在一些变种声明的情况下的物体,例如:整数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
- 结果
- 家属的集合
-
-