Различные правила Checkstyle для основного и теста в Maven - PullRequest
2 голосов
/ 03 мая 2011

Я пытаюсь настроить проект maven таким образом, чтобы я смог запустить checkstyle, используя два разных набора правил: один для основного и один для тестирования.Я хотел бы сделать что-то вроде:

<reporting>
  <plugins>
    <!-- One configuration for main -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <configuration>
        <configLocation>checkstyle</configLocation>
      </configuration>
    </plugin>
    <!-- But a different set of rules for test -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <configuration>
        <sourceDirectory>${project.build.testSourceDirectory}</sourceDirectory>
        <configLocation>checkstyle-test.xml</configLocation>
      </configuration>
    </plugin>
  </plugins>
</reporting>

Я успешно смог запустить одну или другую версию, но не обе одновременно.Включая попытки привязать их к различным фазам выполнения, но, похоже, практическое правило - последнее используемое определение.

Так что я бы хотел:

-Идеально - иметьдва отдельных файла конфигурации контрольного стиля, которые можно запускать независимо

ИЛИ

- иметь одну конфигурацию контрольного стиля, использовать свойство config includeTestSourceDirectory для одновременной проверки main и test, но выборочно применять некоторые правилаприменяется к одному из main / test или другому.

Ответы [ 2 ]

4 голосов
/ 17 мая 2011

Мне не удалось найти какой-либо механизм, с помощью которого разные правила checkstyle могут применяться к разным корням исходного кода во время компиляции (другой ответ может работать для генерации отчетов, но мои потребности заключаются в особой проверке времени компиляции). Реализованное решение состоит в том, чтобы иметь правила, которые применяются к источнику, а затем использовать механизм подавлений контрольного стиля, чтобы исключить определенные правила в тестовых классах, т.е.

<suppress checks="CheckInappropiateForTests" files=".*Test\.java"/>
2 голосов
/ 03 мая 2011

А как насчет следующего:

   <reporting>
     <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.6</version>
        <reportSets>
          <reportSet>
            <id>main_checks</id>
            <reports>
              <report>checkstyle</report>
            </reports>
            <configuration>
              <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
              <includeTestSourceDirectory>false</includeTestSourceDirectory>
              <configLocation>config/maven_checks.xml</configLocation>
              <outputDirectory>${project.reporting.outputDirectory}/main-checks/</outputDirectory>
            </configuration>
          </reportSet>
          <reportSet>
            <id>test_checks</id>
            <reports>
              <report>checkstyle</report>
            </reports>
            <configuration>
              <sourceDirectory></sourceDirectory>
              <testSourceDirectory>${project.build.testSourceDirectory}</testSourceDirectory>
              <includeTestSourceDirectory>true</includeTestSourceDirectory>
              <configLocation>config/sun_checks.xml</configLocation>
              <outputDirectory>${project.reporting.outputDirectory}/test-checks/</outputDirectory>
            </configuration>
          </reportSet>
        </reportSets>
      </plugin>
     </plugins>
   </reporting>
...