Maven + FindBugs - сбой при предупреждении с высоким приоритетом

Я использую Maven и FindBugs в большом проекте. Я хотел бы, чтобы сборка maven завершилась ошибкой, если FindBugs выдает какие-либо ошибки с высоким приоритетом. Простой параметр может быть установлен в pom.xml для отказа при ошибках, но мне нужно, чтобы он не работал при предупреждениях с высоким приоритетом. Любые предложения будут огромными!


person Community    schedule 17.05.2012    source источник
comment
Выводит ли Findbugs какое-то сообщение в случае обнаружения такого предупреждения?   -  person Andrew Logvinov    schedule 17.05.2012
comment
Да, это так. Что ты думаешь?   -  person    schedule 17.05.2012
comment
В нашей компании мы используем TeamCity в качестве нашего сервера CI, и у него есть возможность завершить сборку, если в журналах было обнаружено какое-либо сообщение. Может быть, в Гудзоне есть что-то подобное. Если да, то можно использовать =)   -  person Andrew Logvinov    schedule 17.05.2012


Ответы (1)


Я подозреваю, что вы уже знаете о цели findbugs:check, доступной для плагина. Установка для элемента конфигурации порогового значения значения «Высокий» должна ограничить цель сбоем только для проблем с высоким приоритетом.

Вот пример фрагмента конфигурации для вашего pom.xml

<build>
...
<plugins>
...
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>findbugs-maven-plugin</artifactId>
  <version>2.4.0</version>
  <executions>
    <execution>
      <id>failing-on-high</id>
      <phase>process-test-resources</phase>
      <goals>
        <goal>check</goal>
      </goals>
      <configuration>
        <threshold>High</threshold>
        <onlyAnalyze>com.example.-</onlyAnalyze>
      </configuration>
    </execution>
  </executions>
</plugin>
...
</plugins>
...
</build>

В этом фрагменте я ограничил анализ пакетами, начинающимися с «com.example», установил пороговое значение «Высокий» и настроил findbugs:check для запуска перед автоматическими тестами.

Пример того, как это вызывает сбой сборки:

[INFO] --- findbugs-maven-plugin:2.4.0:findbugs (findbugs) @ channels ---
[INFO] Fork Value is true
     [java] Warnings generated: 29
[INFO] Done FindBugs Analysis....
[INFO] 
[INFO] <<< findbugs-maven-plugin:2.4.0:check (failing-on-high) @ channels <<<
[INFO] 
[INFO] --- findbugs-maven-plugin:2.4.0:check (failing-on-high) @ pricing ---
[INFO] BugInstance size is 29
[INFO] Error size is 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

См. также: http://mojo.codehaus.org/findbugs-maven-plugin/check-mojo.html для других параметров конфигурации, которые вы можете включить. Вы, вероятно, захотите включить отчет xml, чтобы ваш CI-сервер мог легко записывать его и сообщать об ошибках, используя конфигурацию xmlOutput.

person stevelle    schedule 17.05.2012
comment
Хм... это частично работает. Похоже, что он терпит неудачу даже тогда, когда встречаются только обычные ошибки приоритета. Я проверю документ check-mojo. - person ; 18.05.2012
comment
Я не понимаю, что вы имеете в виду... скажем, мы забыли о Хадсоне - даже если я запускаю mvn clean install findbugs:check с вышеуказанным в моем pom.xml, в проекте только с предупреждениями о низком приоритете, я получаю ошибку сборки из-за findbugs. Это похоже на то, что он полностью игнорирует порог. - person ; 18.05.2012
comment
Еще одна вещь: на самом деле это может быть ошибка в плагине Maven (я почти убежден), и в этом случае обходным путем является создание файла фильтра, а затем попытка его использования (снова просмотрите ссылку check-mojo для подходящий вариант). stackoverflow.com/ вопросы/4657336/ - person stevelle; 18.05.2012