2015-04-08 2 views
12

Я использую JaCoCo, и он рассматривает методы, созданные Lombok (сгенерированные в байт-коде, а не трассировка их в исходном коде). Как я могу настроить JaCoCo, чтобы игнорировать их?JaCoCo: исключить сгенерированные методы (используя его с Lombok)

+0

Возможный дубликат [Ломбок аннотациями против покрытия кода в Cobertura или аналогичного инструмента] (http://stackoverflow.com/questions/10276666/lombok-annotations-vs-code-coverage-in-cobertura-or- аналогичный инструмент) –

ответ

2

Используйте тег excludes, предоставляемый jacoco.

  <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.4.201502262128</version> 
      <configuration> 
       <excludes> 
        <exclude>**/config/**</exclude> 
        <exclude>**/model/**</exclude> 
        <exclude>**/item/**</exclude> 
       </excludes> 
      </configuration> 
+1

Это работает только частично, поскольку фильтры исключают только фильтры. Я думаю, вы исключили бы все сгенерированный код не только для классов. Должен работать для '@ Builder', но не для методов, созданных' @ Data' - все еще обсуждается, см. Https://github.com/jacoco/jacoco/wiki/FilteringOptions. Поскольку lombok добавляет '@ Generated' в сгенерированный код, JaCoCo должен отфильтровать это, но это недостающая функция. –

+1

@ArneBurmeister Это потому, что '@ Generated' имеет удержание == SOURCE, но JaCoCo анализирует только байт-код, поэтому отсутствует эта информация. – namero999

+1

@ namero999 вы правы, наблюдайте за этим, но фильтр аннотаций был бы замечательным, поскольку lombok добавляет свою собственную аннотацию 'lombok.Generated' (не то, что из' javax.annotation'). –