Класс 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 |
Для заданной входной строки найдите первый фрагмент кода (одно выражение, определение, импорт или выражение) и оцените, является ли он полным. |
abstract String |
analyzeType |
Определение типа заданного выражения. |
abstract List |
completionSuggestions |
Вычисление возможных продолжений для заданного ввода. |
abstract Collection |
dependents |
Возвращает коллекцию Snippet, которые могут потребовать обновления, если заданный Snippet обновляется. |
abstract List |
documentation |
Вычисление документации для заданного ввода пользователя. |
abstract List |
highlights |
Возвращает коллекцию Highlight, которые могут использоваться для раскраски заданного фрагмента. |
abstract SourceCodeAnalysis.QualifiedNames |
listQualifiedNames |
Список известных квалифицированных имен для простого имени в заданном коде непосредственно слева от указанной позиции курсора. |
abstract List |
sourceToSnippets |
Преобразование исходного кода фрагмента в объект Snippet (или список объектов Snippet в случае некоторых объявлений переменных, например: int x, y, z;). |
abstract SourceCodeAnalysis.SnippetWrapper |
wrapper |
Возвращает информацию об оболочке для Snippet. |
abstract List |
wrappers |
Возвращает информацию об оболочке для фрагмента внутри входной строки исходного кода. |
Подробное описание методов
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)
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