モジュール jdk.jshell
パッケージ jdk.jshell

クラスSourceCodeAnalysis

java.lang.Object
jdk.jshell.SourceCodeAnalysis

public abstract class SourceCodeAnalysis extends Object
ソース・コード入力用の解析ユーティリティを提供します。 より豊富なインタラクティブな体験を提供するオプションの機能。 補完分析が含まれています: 入力コードの完全なスニペットですか? 入力を促す必要がありますか? セミコロンを追加すると完了しますか? 複数のスニペットがありますか?タブ補完で使用されるような補完候補も含まれます。
導入されたバージョン:
9
  • メソッドの詳細

    • 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

      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
      戻り値:
      ラッパーに関する情報
    • wrappers

      public abstract List<SourceCodeAnalysis.SnippetWrapper> wrappers(String input)
      入力ソース文字列内のスニペットのラッパー情報を返します。

      不正形式や不完全なスニペットのラッパー情報もラッパーを生成します。 リストはスニペットの出会いの順序になっています。 ラッパーは環境が変化するにつれて変化するため、異なる時間にこのメソッドを呼び出すと結果が異なることがあります。

      入力は、ソース・コードの完全な1つのスニペット、つまり1つの式、文、変数宣言、メソッド宣言、クラス宣言、またはインポートでなければなりません。 任意の入力を個々の完全なスニペットに分割するには、analyzeCompletion(String)を使用します。

      ラッパーがwrapper(Snippet)によって返されたものと一致しない場合があります。ソースがSnippetに変換されたものです。

      パラメータ:
      input - ラッパーを生成するソース入力
      戻り値:
      ラッパー情報のリスト
    • sourceToSnippets

      public abstract List<Snippet> sourceToSnippets(String input)
      スニペットのソース・コードを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
      戻り値:
      扶養家族のコレクション