Sonarqube - удалите это неиспользуемое приватное поле Code Smell, используя Lombok @data - PullRequest
0 голосов
/ 10 октября 2019

У меня в моем Java-проекте есть куча Code Smells вокруг кусочков кода, подобных этому:

@Data
public class Foobar extends Foo { 
    private String baz;
}

My lombok.config расположен рядом с pom.xml и выглядит так:

config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true

Это вызвало номера покрытия кода, а не очистило запахи кода.

Кажется, я не только человек, столкнувшийся с этой проблемой.

С точки зрения версий:

  • Lombok 1.18.8 (также пробовал с 1.18.10)
  • Jacoco 0.8.4
  • SonarQube 7.9.1.27448
  • SonarQube Scanner 4.0.0.1744

Я видел несколько похожих вопросов по этому вопросу, но им все ~ 5 лет, поэтому я не верю, что ответы все еще действительны.

1 Ответ

0 голосов
/ 10 октября 2019

Я столкнулся с той же проблемой с вами несколько месяцев назад. Моя версия jacoco - 0.8.2, а lombok - v1.16.16. Я помню, что проблема исчезла после добавления lombok.config в корневой каталог проекта. Просто обратите внимание, если вы определяете свои собственные конструкторы для класса, который уже помечен как Data, тогда покрытие будет рассчитываться по тому, сколько конструкторов было вызвано вашими тестами.

И если это не помогло. Вы можете найти обходной путь, исключив их в конфигурации Jacoco / конфигурации SonarQube

Пример исключения в jacoco:

<plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.2</version>
            <configuration>
                <excludes>
                    <exclude>**/your_class_path/**</exclude>
                </excludes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <!-- attached to Maven test phase -->
                <execution>
                    <id>report</id>
                    <phase>test</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

А для SonarQube вы можете использовать параметр -Dsonar.inclusion для включенияи параметр -Dsonar.exclusion при вызове mvn sonar: sonar

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