Как исключить определенные классы из включения в покрытие кода?(Джава) - PullRequest
0 голосов
/ 07 мая 2019

Я уже мог исключить классы из отчета сонарного куба, добавив его в тег моего файла POM.

 <properties>
        <java.version>1.8</java.version>
        <sonar.exclusions> 
            /src/main/java/com/example/org/test/mainpackage/message/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/security/jwt/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/security/services/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/controller/AuthRestAPIs.java
            ,
            /src/main/java/com/example/org/test/mainpackage/controller/TestRestAPIs.java
        </sonar.exclusions>
    </properties>

Однако тот же код при локальном запуске для проверки покрытия кода вообще не работает,

Где я могу настроить это программно с помощью Maven & Spring Boot?

Я уже могу исключить нужные классы с помощью

Настройки> Построение, выполнение, развертывание> Исключения> [Исключить класс (ы)]

или через

Редактирование конфигураций> Выберите вкладку Покрытие кода> затем добавьте пакет или класс, который я хочу исключить или включить только в отчет о покрытии кода.

То, что я хочу, - это кодирование исключаемых классов, т.е. в файле pom, как я делал, за исключением кода для сонара qube.

Чтобы сделать его коротким.Как мне сделать это программно?.

Причина, по которой я хотел сделать это программно, заключается в том, что два вышеупомянутых шага, которые я сделал, чтобы исключить файлы из отчета в покрытии кода, заключаются в том, что файлы не были включены во всемой проект, который я мог бы вставить в репозиторий, чтобы изменения, которые я сделал для исключений, отразились на всех тех, кто извлечет из репозитория git.Без добавления файлов или конфигураций, которые я мог бы выдвинуть и отразить для всех в репо.Это означает, что мои исключения будут работать только локально, а не работать на других.Правильно?.Поэтому здесь я прошу способ сделать программно, например, поместить исключения в файл POM.

Ответы [ 3 ]

1 голос
/ 07 мая 2019

Это не тот ответ, который я действительно искал.Но сейчас это будет делать для меня.Все еще ищите способ сделать это через файл pom, java или beans.спасибо

Решение:

Так что, если вы сделали свои исключения в Run Configuration вашего проекта.Это через 2-й шаг, который я упомянул в вопросе, через

Изменить конфигурацию> Покрытие кода.enter image description here


А затем фактически добавьте свои исключения.Вам нужно будет просто отметить текстовое поле «Поделиться» и нажать «Применить».Сделанные вами исключения будут доступны в каталоге вашего проекта по адресу

.idea / runConfigurations / [xml-файл исключений, которые вы сделали, и других конфигураций выполнения].enter image description here

И чтобы это можно было протолкнуть, просто удалите

.idea в файле .gitignore в git.enter image description here


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

PS: это может повлиять на отчет о покрытии в вашем Sonarqube.Вы должны отменить это и вытащить из репозитория локальную конфигурацию запуска, чтобы иметь возможность использовать исключения класса Sonar Qubes.По какой-то причине в моем приложении пропущены все исключения, которые я сделал перед этим.

1 голос
/ 07 мая 2019

Поскольку вы используете Maven, вам необходимо настроить исключения в плагине jacoco, который используется для сбора статистики покрытия и передачи ее в сонар.

<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.1</version>
<executions>
        <execution>
            <id>prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <!-- Sets the path to the file which contains the execution data. -->
                <dataFile>target/jacoco.exec</dataFile>
                <!-- Sets the output directory for the code coverage report. -->
                <outputDirectory>target/jacoco-ut</outputDirectory>
            </configuration>
        </execution>
</executions>
<configuration>
    <systemPropertyVariables>
        <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
    </systemPropertyVariables>
    <excludes>
        <exclude>snmaddula/app/domain/*.class</exclude>
        <exclude>snmaddula/app/exception/*.class</exclude>
        <exclude>snmaddula/app/filter/*.class</exclude>
        <exclude>snmaddula/app/App.class</exclude>
    </excludes>
</configuration>
</plugin>

Ссылки:

0 голосов
/ 07 мая 2019

В application.properties вы можете сделать что-то вроде этого:

sonar.exclusions=src/main/java/com/example/org/test/mainpackage/message/**/*, 
src/main/java/com/example/org/test/mainpackage/security/jwt/**/*, 
src/main/java/com/example/org/test/mainpackage/security/services/**/*,
src/main/java/com/example/org/test/mainpackage/controller/AuthRestAPIs.java,
src/main/java/com/example/org/test/mainpackage/controller/TestRestAPIs.java

Также другим способом будет вход в систему с правами администратора в сонаре и переход к настройкам

> Исключения> Исключения из исходного файла - добавьте свои пакеты сюда.Перезагрузите сервер.

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