Spec-Zone.ru › OpenJDK 17

Класс SourceCodeAnalysis

java.lang.Object
jdk.jshell.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(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 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 - входная строка для преобразования
Возвращает:
обычно список из одного элемента 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

Spec-Zone.ru

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