// Использование несовместимых комментариев - Пользовательское правило SonarQube - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь написать несколько пользовательских правил SONARQUBE для моего проекта.После прочтения приведенного ниже документа - https://docs.sonarqube.org/display/PLUG/Writing+Custom+Java+Rules+101 и https://github.com/SonarSource/sonar-custom-rules-examples, я создал собственное правило, подобное приведенным ниже классам -

Файл правил:

@Rule(key = "MyAssertionRule")
public class FirstSonarCustomRule extends BaseTreeVisitor implements JavaFileScanner {

    private static final String DEFAULT_VALUE = "Inject";
    private JavaFileScannerContext context;
    /**
     * Name of the annotation to avoid. Value can be set by users in Quality
     * profiles. The key
     */
    @RuleProperty(defaultValue = DEFAULT_VALUE, description = "Name of the annotation to avoid, without the prefix @, for instance 'Override'")
    protected String name;

    @Override
    public void scanFile(JavaFileScannerContext context) {
        this.context = context;
        System.out.println(PrinterVisitor.print(context.getTree()));
        scan(context.getTree());
    }

    @Override
    public void visitMethod(MethodTree tree) {
        List<StatementTree> statements = tree.block().body();

        for (StatementTree statement : statements) {
            System.out.println("KIND IS " + statement.kind());
            if (statement.is(Kind.EXPRESSION_STATEMENT)) {
                if (statement.firstToken().text().equals("Assert")) {
                    System.out.println("ERROR");

                }
            }
        }
    }
}

Тестовый класс:

public class FirstSonarCustomRuleTest {

    @Test
    public void verify() {
        FirstSonarCustomRule f = new FirstSonarCustomRule();
        f.name = "ASSERTION";
        JavaCheckVerifier.verify("src/test/files/FirstSonarCustom.java", f);
    }
}

И наконец - файл Test:

class FirstSonarCustom {

    int aField;

    public void methodToUseTestNgAssertions() {
        Assert.assertTrue(true);
    }
}

Приведенный выше тестовый файл позже будет исходным кодом моего Проекта.Согласно документации SONAR - // Несовместимый является обязательным комментарием в моем тестовом файле.Таким образом, мой первый вопрос должен ли я добавить этот комментарий везде в моем исходном коде тоже?Если да - могу ли я избежать добавления этого комментария, потому что я не хочу добавлять это упражнение по рефакторингу повсюду.

Может кто-нибудь подсказать мне, что мне нужно сделать здесь?

Я использую SONARQUBE 6.3.

1 Ответ

0 голосов
/ 18 сентября 2018

Этот комментарий используется только тестовой средой (класс JavaCheckVerifier) для проверки реализации вашего правила. Это не является обязательным в любом случае и наверняка вам не нужно это в вашем реальном коде.

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