Класс SourceCodeAnalysis
- java.lang.Object
-
- jdk.jshell.SourceCodeAnalysis
public abstract class SourceCodeAnalysis extends Object
Предоставляет утилиты анализа для входных данных исходного кода. Дополнительные возможности, обеспечивающие более богатый интерактивный опыт. Включает анализ полноты: является ли входной фрагмент полным фрагментом кода? Нужно ли запросить дополнительные входные данные? Добавление точки с запятой сделает его полным? Есть ли несколько фрагментов? и т. д. Также включает предложения завершения, которые могут использоваться в автозаполнении.
- Since:
- 9
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
SourceCodeAnalysis.Completeness |
Описывает полноту заданного входного значения. |
static interface |
SourceCodeAnalysis.CompletionInfo |
Результат |
static interface |
SourceCodeAnalysis.Documentation |
Документация кандидата для продолжения ввода пользователя. |
static 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) |
Возвращает коллекцию |
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) |
Преобразует исходный код фрагмента в объект |
abstract SourceCodeAnalysis.SnippetWrapper |
wrapper(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)
Для заданной строки ввода найдите первый фрагмент кода (одно утверждение, определение, импорт или выражение) и оцените, является ли он полным.
- Parameters:
-
input- строка исходного кода ввода - Returns:
- экземпляр CompletionInfo с информацией о местоположении и полноте
completionSuggestions
public abstract List<SourceCodeAnalysis.Suggestion> completionSuggestions(String input,
int cursor,
int[] anchor)
Вычислите возможные продолжения для данного ввода. Использует информацию из текущего JShell состояния, включая информацию о типах, для фильтрации предложений.
- Parameters:
-
input- входной ввод пользователя до текущего момента -
cursor- текущее положение курсоров в заданном текстеinput -
anchor- исходящий параметр — когда вариант будет завершён, текст между якорем и курсором будет удалён и заменён заданным вариантом - Returns:
- список кандидатских продолжений заданного ввода.
documentation
public abstract List<SourceCodeAnalysis.Documentation> documentation(String input,
int cursor,
boolean computeJavadoc)
Вычислите документацию для заданного ввода пользователя. Несколько объектов Documentation могут быть возвращены, когда несколько элементов соответствуют вводу пользователя (например, для перегруженных методов).
- Parameters:
-
input- фрагмент, написанный пользователем до сих пор -
cursor- текущее положение курсоров в заданном текстеinput -
computeJavadoc- true, если javadoc для заданного ввода должен быть вычислен дополнительно к сигнатуре - Returns:
- документация для данного ввода пользователя, если несколько элементов соответствуют вводу, возвращаются несколько объектов
Documentation
analyzeType
public abstract String analyzeType(String code,
int cursor)
Определите тип данного выражения. Выражение охватывает от начала code до заданной позиции cursor. Возвращает null, если тип выражения нельзя определить.
- Parameters:
-
code- выражение, для которого должен быть определён тип -
cursor- текущая позиция курсора в заданном коде - Returns:
- определённый тип или null, если его нельзя определить
listQualifiedNames
public abstract SourceCodeAnalysis.QualifiedNames listQualifiedNames(String code,
int cursor)
Список квалифицированных имён, известных для простого имени в заданном коде непосредственно слева от заданной позиции курсора. Квалифицированные имена собираются путём проверки используемого classpath eval (см. JShell.addToClasspath(java.lang.String)).
- Parameters:
-
code- выражение, для которого должны быть вычислены кандидаты в квалифицированные имена -
cursor- текущая позиция курсора в заданном коде - Returns:
- известные квалифицированные имена
wrapper
public abstract SourceCodeAnalysis.SnippetWrapper wrapper(Snippet snippet)
Возвращает информацию об оболочке для Snippet. Оболочка изменяется по мере изменения среды, поэтому вызовы этого метода в разное время могут давать разные результаты.
- Parameters:
-
snippet-Snippetдля получения информации об оболочке - Returns:
- информация об оболочке
wrappers
public abstract List<SourceCodeAnalysis.SnippetWrapper> wrappers(String input)
Возвращает информацию об оболочке для фрагмента в строке исходного кода.
Информация об оболочке для некорректных и неполных фрагментов также генерирует оболочки. Список находится в порядке обнаружения фрагментов. Оболочка изменяется по мере изменения среды, поэтому вызовы этого метода в разное время могут давать разные результаты.
Входные данные должны быть ровно одним полным фрагментом исходного кода, то есть одним выражением, утверждением, объявлением переменной, объявлением метода, объявлением класса или импортом. Чтобы разбить произвольный ввод на отдельные полные фрагменты, используйте analyzeCompletion(String).
Оболочка может не совпадать с той, что возвращается wrapper(Snippet), если исходный код преобразуется в Snippet.
- Parameters:
-
input- входные данные исходного кода для генерации оболочек - Returns:
- список информации об оболочке
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, другие фрагменты могут быть или не быть ошибочными.
- Parameters:
-
input- входная строка для преобразования - Returns:
- обычно список из одного фрагмента Snippet, но может быть пустым или содержать несколько
- Throws:
-
IllegalStateException- если экземплярJShellзакрыт.
dependents
public abstract Collection<Snippet> dependents(Snippet snippet)
Возвращает коллекцию Snippet которые могут потребовать обновления, если заданный Snippet обновляется. Возвращаемая коллекция предназначена для полноты и может включать множество ложных срабатываний.
- Parameters:
-
snippet-Snippetдля которого запрашиваются зависимые элементы - Returns:
- коллекция зависимых элементов
© 1993, 2020, 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/11/docs/api/jdk.jshell/jdk/jshell/SourceCodeAnalysis.html