Spec-Zone.ru › OpenJDK 24

Класс 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 закрыт.
С момента:
10

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.
С момента:
19

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/jdk.jshell/jdk/jshell/SourceCodeAnalysis.html

Spec-Zone.ru

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