Класс 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закрыт.
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