SonarQube Пользовательское правило Java для класса внутри аннотации - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу выполнить анализ в классе , только если этот класс находится внутри аннотации другого класса. Этот пример объяснит это лучше:

Вот мой класс:

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.

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