Как найти использование устаревших классов Java с помощью команды Structural Search в Intellij IDEA? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь создать проверку на основе функции поиска и замены конструкций. Итак, мне нужно создать шаблон поиска, чтобы найти все виды использования устаревших классов в коде Java, но я не могу понять, как это сделать.

Я пробовал установить: Search template: $Symbol$ Filters for $Symbol$: reference=annotated classes; script=com.intellij.psi.impl.PsiImplUtil.isDeprecated(Symbol) но это не работает (не находит использование устаревших классов)

Например, мы устарели для класса A:

@Deprecated
public class A {}

и использование этого класса в классе B:

@RunWith(A.class)
public class B {}

1 Ответ

2 голосов
/ 11 июля 2019

Вы можете создать два шаблона поиска для этой задачи: во-первых, шаблон поиска для устаревшего класса, во-вторых, шаблон поиска для устаревшей ссылки на класс.

Вы можете импортировать следующие шаблоны с помощью инструмента «Импорт шаблона из буфера обмена» enter image description here

<searchConfiguration name="deprecated class" text="@Deprecated class $C$ {} " recursive="true" caseInsensitive="true" type="JAVA" pattern_context="default">
 <constraint name="__context__" within="" contains="" />
 <constraint name="C" within="" contains="" />
</searchConfiguration>


<searchConfiguration name="reference to deprecated class" text="$ref$" recursive="true" caseInsensitive="true" type="JAVA" pattern_context="default">
 <constraint name="__context__" within="" contains="" />
 <constraint name="ref" reference="deprecated class" within="" contains="" />
</searchConfiguration>

Кстати, есть проверка Устаревшее использование API (Java | зрелость кода | Устаревшее использование API), которое имеет аналогичную функциональность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...