Spec-Zone.ru › OpenJDK 21

Класс SourceCodeAnalysis

java.lang.Object
jdk.jshell.SourceCodeAnalysis
public abstract class SourceCodeAnalysis extends Object
Предоставляет утилиты анализа исходного кода. Дополнительные возможности для более богатого интерактивного опыта. Включает анализ полноты: является ли ввод полным фрагментом кода? Нужно ли запросить дополнительный ввод? Добавление точки с запятой сделает его полным? Есть ли несколько фрагментов? и т.д. Также включает предложения по дополнению, как в завершении ввода с помощью табуляции.
Since:
9

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static enum  SourceCodeAnalysis.Attribute
Атрибут span, который можно использовать для получения цвета.
static enum  SourceCodeAnalysis.Completeness
Описание полноты данного ввода.
static interface  SourceCodeAnalysis.CompletionInfo
Результат analyzeCompletion(String input).
static interface  SourceCodeAnalysis.Documentation
Документация кандидата на продолжение ввода пользователя.
static final record  SourceCodeAnalysis.Highlight
Назначает атрибуты, пригодные для раскрашивания, span внутри фрагмента.
static final 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 List<SourceCodeAnalysis.Highlight> highlights(String snippet)
Возвращает коллекцию Highlight которые могут быть использованы для раскраски данного фрагмента.
abstract SourceCodeAnalysis.QualifiedNames listQualifiedNames(String code, int cursor)
Список известных квалифицированных имен для простого имени в данном коде непосредственно слева от заданной позиции курсора.
abstract List<Snippet> sourceToSnippets(String input)
Преобразует исходный код фрагмента в объект Snippet (или список объектов Snippet в случае некоторых объявлений переменных, например: int x, y, z;).
abstract SourceCodeAnalysis.SnippetWrapper wrapper(Snippet snippet)
Возвращает информацию об оболочке для Snippet.
abstract List<SourceCodeAnalysis.SnippetWrapper> wrappers(String input)
Возвращает информацию об оболочке для фрагмента внутри входной строки.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

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
anchor - выходной параметр - когда будет завершен вариант, текст между якорем и курсором будет удален и заменен указанным вариантом
Возвращает:
список кандидатов в продолжение данного входного значения.

documentation

public abstract List<SourceCodeAnalysis.Documentation> documentation(String input, int cursor, boolean computeJavadoc)
Вычислите документацию для данного входного значения пользователя. Несколько Documentation объектов могут быть возвращены, когда несколько элементов соответствуют введенному пользователем значению (например, для перегруженных методов).
Параметры:
input - фрагмент кода, написанный пользователем до настоящего момента
cursor - текущее положение курсоров в данном тексте input
computeJavadoc - true, если javadoc для данного ввода должен быть вычислен дополнительно к подписи
Возвращает:
документацию для данного ввода пользователя; если нескольким элементам соответствует вход, возвращаются несколько 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)
Возвращает информацию об обертке для фрагмента кода внутри входной строки-источника.

Информация об обертке для неправильно сформированных и неполных фрагментов кода также генерирует обертки. Список находится в порядке обнаружения фрагментов. Обёртка изменяется при изменении среды, поэтому вызовы этого метода в разное время могут давать разные результаты.

Ввод должен быть ровно одним полным фрагментом исходного кода, то есть одним выражением, оператором, объявлением переменной, объявлением метода, объявлением класса или импортом. Чтобы разбить произвольный ввод на отдельные полные фрагменты, используйте analyzeCompletion(String).

Обёртка может не совпадать с той, которая возвращается wrapper(Snippet), если исходный код был преобразован в Snippet.

Параметры:
input - входной исходный текст для генерации оберток
Возвращает:
список информации об обертке

sourceToSnippets

public abstract List<Snippet> sourceToSnippets(String input)
Преобразует исходный код фрагмента в объект Snippet (или список 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

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/jdk.jshell/jdk/jshell/SourceCodeAnalysis.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API