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

クラスSourceCodeAnalysis


  • public abstract class SourceCodeAnalysis
    extends Object
    ソース・コード入力用の分析ユーティリティを提供します。 より豊富な対話型エクスペリエンスを提供するオプション機能。 完了分析を含む: 入力は完全なコード・スニペットですか。 さらに入力を要求する必要がありますか。 セミコロンを追加すると完了します。 スニペットは複数ありますか?etc.また、タブ補完で使用されるように、完了候補も含まれます。
    導入されたバージョン:
    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つの式、文、変数宣言、メソッド宣言、クラス宣言またはインポート)です。 任意の入力を個々の完全なスニペットに分割するには、analyzeCompletion(String)を使用します。

        ラッパーは、ソースがSnippetに変換されたwrapper(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 - 変換する入力文字列
        戻り値:
        通常はSnippetのシングルトン・リストですが、空または複数にできます。
        例外:
        IllegalStateException - JShellインスタンスがクローズされている場合。
      • dependents

        public abstract Collection<Snippet> dependents​(Snippet snippet)
        指定されたSnippetが更新された場合に更新が必要な可能性のあるSnippetのコレクションを返します。 返されるコレクションは包括的であると設計されており、多くの誤検出が含まれる場合があります。
        パラメータ:
        snippet - 依存性がリクエストされたSnippet
        戻り値:
        扶養家族のコレクション