Класс SourceCodeAnalysis
public abstract class SourceCodeAnalysis extends Object
- Since:
- 9
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
SourceCodeAnalysis.Completeness |
Описывает полноту заданного входного значения. |
static interface |
SourceCodeAnalysis.CompletionInfo |
Результат analyzeCompletion(String input). |
static interface |
SourceCodeAnalysis.Documentation |
Документация для кандидата на продолжение ввода пользователя. |
static final class |
SourceCodeAnalysis.QualifiedNames |
Список возможных квалифицированных имен. |
static interface |
SourceCodeAnalysis.SnippetWrapper |
Оборачивание фрагмента Java-исходного кода в действительный верхнеуровневый Java-исходный код. |
static interface |
SourceCodeAnalysis.Suggestion |
Кандидат на продолжение ввода пользователя. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract SourceCodeAnalysis.CompletionInfo |
analyzeCompletion |
Для заданной входной строки найдите первый фрагмент кода (одно утверждение, определение, импорт или выражение) и оцените, является ли он полным. |
abstract String |
analyzeType |
Определите тип данного выражения. |
abstract List<SourceCodeAnalysis.Suggestion> |
completionSuggestions |
Вычислите возможные продолжения для данного ввода. |
abstract Collection<Snippet> |
dependents |
Возвращает коллекцию Snippet которые могут потребовать обновления, если заданный Snippet будет обновлен. |
abstract List<SourceCodeAnalysis.Documentation> |
documentation |
Вычислите документацию для данного ввода пользователя. |
abstract SourceCodeAnalysis.QualifiedNames |
listQualifiedNames |
Список квалифицированных имен, известных для простого имени в заданном коде непосредственно слева от заданной позиции курсора. |
abstract List<Snippet> |
sourceToSnippets |
Преобразует исходный код фрагмента в объект Snippet (или список объектов Snippet в случае некоторых объявлений переменных, например: int x, y, z;). |
abstract SourceCodeAnalysis.SnippetWrapper |
wrapper |
Возвращает информацию об оболочке для Snippet. |
abstract List<SourceCodeAnalysis.SnippetWrapper> |
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- входная строка для преобразования - Возвращает:
- обычно список из одного элемента Snippet, но может быть пустым или содержать несколько элементов
- Исключения:
-
IllegalStateException- если экземплярJShellзакрыт.
dependents
public abstract Collection<Snippet> dependents(Snippet snippet)
Snippet , которые могут потребовать обновления, если заданный Snippet обновляется. Возвращаемая коллекция предназначена для полноты и может включать множество ложных срабатываний.- Параметры:
-
snippet-Snippet, зависимые от которого требуются - Возвращает:
- коллекция зависимостей
© 1993, 2021, 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/17/docs/api/jdk.jshell/jdk/jshell/SourceCodeAnalysis.html