java.lang.Object
jdk.jshell.SourceCodeAnalysis
public abstract class SourceCodeAnalysis extends Object
ソース・コード入力用の解析ユーティリティを提供します。 より豊富なインタラクティブな体験を提供するオプションの機能。 補完分析が含まれています: 入力コードの完全なスニペットですか? 入力を促す必要がありますか? セミコロンを追加すると完了しますか? 複数のスニペットがありますか?タブ補完で使用されるような補完候補も含まれます。
- 導入されたバージョン:
- 9
-
ネストされたクラスのサマリー
修飾子と型クラス説明static enum
色付けの導出に使用できるスパン属性。static enum
与えられた入力の完全性を記述します。static interface
analyzeCompletion(String input)
の結果。static interface
与えられたユーザー入力の継続候補者のための文書。static final record
スニペット内のスパンに色付けするために使用できる属性を割り当てます。static final class
可能な修飾名のリスト。static interface
Javaソースのスニペットを有効なトップレベルJavaソースにラップします。static interface
与えられたユーザー入力の継続候補。 -
メソッドのサマリー
修飾子と型メソッド説明abstract SourceCodeAnalysis.CompletionInfo
analyzeCompletion
(String input) 入力文字列が与えられたら、コード(1つの文、定義、インポート、または式)の最初のスニペットを見つけ、それが完了しているかどうかを評価します。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 List<SourceCodeAnalysis.Highlight>
highlights
(String snippet) 指定されたスニペットの色付けに使用できるHighlight
のコレクションを返します。abstract SourceCodeAnalysis.QualifiedNames
listQualifiedNames
(String code, int cursor) 指定されたコード内の単純な名前で知られている修飾名を、指定されたカーソル位置のすぐ左側にリストします。sourceToSnippets
(String input) スニペットのソース・コードをSnippet
オブジェクト(またはいくつかのvar宣言の場合はSnippet
オブジェクトのリスト、たとえば: int x、y、z;)に変換します。abstract SourceCodeAnalysis.SnippetWrapper
Snippet
のラッパー情報を返します。abstract List<SourceCodeAnalysis.SnippetWrapper>
入力ソース文字列内のスニペットのラッパー情報を返します。
-
メソッドの詳細
-
analyzeCompletion
public abstract SourceCodeAnalysis.CompletionInfo analyzeCompletion(String input) 入力文字列が与えられたら、コード(1つの文、定義、インポート、または式)の最初のスニペットを見つけ、それが完了しているかどうかを評価します。- パラメータ:
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をシグネチャに加えて計算する必要がある場合はtrue- 戻り値:
- 複数の要素が入力と一致する場合は、指定されたユーザー入力のドキュメントが返され、複数の
Documentation
オブジェクトが返されます。
-
analyzeType
与えられた式の型を推論します。 この式は、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
- 戻り値:
- ラッパーに関する情報
-
wrappers
public abstract List<SourceCodeAnalysis.SnippetWrapper> wrappers(String input) 入力ソース文字列内のスニペットのラッパー情報を返します。不正形式や不完全なスニペットのラッパー情報もラッパーを生成します。 リストはスニペットの出会いの順序になっています。 ラッパーは環境が変化するにつれて変化するため、異なる時間にこのメソッドを呼び出すと結果が異なることがあります。
入力は、ソース・コードの完全な1つのスニペット、つまり1つの式、文、変数宣言、メソッド宣言、クラス宣言、またはインポートでなければなりません。 任意の入力を個々の完全なスニペットに分割するには、
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
- 変換する入力文字列- 戻り値:
- 通常はスニペットのシングルトン・リストですが、空でも複数でもかまいません
- 例外:
IllegalStateException
-JShell
インスタンスが閉じられている場合。
-
dependents
public abstract Collection<Snippet> dependents(Snippet snippet) 指定されたSnippet
が更新された場合、更新が必要なSnippet
のコレクションを返します。 返されたコレクションはインクルーシブであるように設計されており、多くの誤検出が含まれる可能性があります。- パラメータ:
snippet
- 依存関係がリクエストされているSnippet
- 戻り値:
- 扶養家族のコレクション
-
highlights
public abstract List<SourceCodeAnalysis.Highlight> highlights(String snippet) 指定されたスニペットの色付けに使用できるHighlight
のコレクションを返します。返される
Highlight
は重複せず、開始位置でソートされます。- パラメータ:
snippet
-Highlight
を計算するスニペット- 戻り値:
- 計算された
Highlight
。 - 導入されたバージョン:
- 19
-