Я хочу выполнить анализ в классе , только если этот класс находится внутри аннотации другого класса. Этот пример объяснит это лучше:
Вот мой класс:
package sonar.special;
public class MySpecialClass {
private String specialField;
public void methodSpecial() {
}
}
И я хочу проверить что-то вроде того, имеет ли он вызов метода methodSpecial()
или если он имеет вызов поля specialField
, это может быть что угодно, это всего лишь примеры.
Но мне нужно сделать эти проверки , только если класс находится внутри аннотации другого класса. Например, мы определили эту аннотацию там, где значение представляет собой список классов:
package sonar.annotations;
public @interface SpecialClasses {
Class<?>[] value();
}
А вот мой первый класс внутри аннотации:
package sonar.configuration;
import sonar.annotations.SpecialClasses;
import sonar.special.MySpecialClass;
@SpecialClasses({
MySpecialClass.class
})
public class Configuration {
}
Может быть многоклассы типа Configuration
распространяются по всему коду.
Мой вопрос: стоя в анализе MySpecialClass, есть ли способ узнать, содержится ли он в значении аннотации другого класса?
Может быть, мы можем пойти другим путем, и из анализа класса Configuration
мы можем добраться до другого класса (MySpecialClass
) и выполнить анализ. Но в этом случае мне нужно, чтобы проблема отображалась в пользовательском интерфейсе в MySpecialClass, и я не знаю, возможно ли это, поскольку у меня есть только ClassTree of Configuration.