java.lang.Object
jdk.jshell.SourceCodeAnalysis
public abstract class SourceCodeAnalysis extends Object
ソース・コード入力の分析ユーティリティを提供します。 より充実したインタラクティブ・エクスペリエンスを提供するオプション機能。 補完分析が含まれています: 入力コードの完全なスニペットですか? 入力を促す必要がありますか? セミコロンを追加すると完成しますか? スニペットは複数ありますか? etc.タブ補完で使用されるように、補完候補も含まれます。
- 導入されたバージョン:
- 9
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static enum色付けの導出に使用できるスパン属性。static enum指定された入力の完全性を示します。static interfaceanalyzeCompletion(String input)の結果。static interface指定されたユーザーの入力を継続するための候補者のドキュメント。static final recordスニペット内のスパンに色付けするために使用できる属性を割り当てます。static final class使用可能な修飾名のリスト。static interfaceJavaソースのスニペットを有効な最上位Javaソースにラップします。static interface指定されたユーザーの入力の継続候補。 -
メソッドのサマリー
修飾子と型メソッド説明abstract SourceCodeAnalysis.CompletionInfoanalyzeCompletion(String input) 入力文字列を指定して、コード(1つの文、定義、インポートまたは式)の最初のスニペットを検索し、それが完了しているかどうかを評価します。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.SnippetWrapperSnippetのラッパー情報を返します。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
-