7
votes

Maven Findbugs: chèque - Résumé de la sortie des bugs

Quelqu'un peut-il savoir comment configurer le plugin Maven Findbugs pour émettre un résumé des bugs à la console (semblable au plugin PMD)?

À l'heure actuelle Findbugs: Vérifiez simplement le nombre de bugs au total et je dois vérifier le répertoire de la cible / Findbugs individuel et chaque fichier FindBugs.xml pour corriger les problèmes. P>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.0.1</version>                              
<configuration>
        <xmlOutput>true</xmlOutput>
        <xmlOutputDirectory>findbugsreports</xmlOutputDirectory>
        <findbugsXmlOutput>true</findbugsXmlOutput>
        <findbugsXmlOutputDirectory>target/site/findbugsreports</findbugsXmlOutputDirectory>
        <debug>true</debug>
</configuration> 
</plugin>


3 commentaires

En fait, je ne comprends pas pourquoi cette fonctionnalité n'était pas implémentée d'abord dans le plugin ... étrange.


Soumis un ticket: Sourceforge.net/tracker/.../a>


Ajouté une réponse associée à Stackoverflow.com/questions/28982149


4 Réponses :


3
votes

Il n'y a pas de moyen de le faire à l'aide du plugin standard. Vous pouvez créer un plug-in pour lire le Findbugscheck.xml et sortir les informations dont vous avez besoin.

Le code ci-dessous émettra le total des bogues trouvés et les bugs par package pour tout projet avec un répertoire FindBugschecks.xml dans le répertoire de sortie. Vous pouvez configurer le nom du fichier qu'il se lit en définissant la propriété FindbugsChecks sur la configuration: p> xxx pré>

Pour emballer ce code, ajoutez-le au dossier SRC / Main / Main / Java de un MavenProject avec un pom comme ceci: p> xxx pré>

puis exécutez MVN Installez fort> pour installer le plugin. P>

pour l'utiliser réellement , vous pouvez l'exécuter comme un objectif supplémentaire sur la ligne de commande ou la lier à votre projet à exécuter dans le cadre du cycle de vie standard. P>

Voici la commande à exécuter à partir de la ligne de commande (en supposant que le projet a précédé été compilé: p> xxx pré>

pour lier les configurations à votre projet afin qu'il soit exécuté sur chaque version, utilisez la configuration suivante: p>

<build>
  <plugins>
    <plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>findbugs-maven-plugin</artifactId>
  <version>2.1</version>
  <executions>
    <execution>
      <id>check</id>
      <phase>package</phase>
      <goals>
        <goal>check</goal>
      </goals>
    </execution>
  </executions>                              
  <configuration>
    <xmlOutput>true</xmlOutput>
    <xmlOutputDirectory>findbugsreports</xmlOutputDirectory>
    <findbugsXmlOutput>true</findbugsXmlOutput>
    <findbugsXmlOutputDirectory>${findbugsOutputDirectory}</findbugsXmlOutputDirectory>
    <debug>true</debug>
    <failOnError>false</failOnError>
  </configuration> 
    </plugin>
    <plugin>
    <groupId>name.seller.rich</groupId>
    <artifactId>maven-findbugs-stats-plugin</artifactId>
    <executions>
      <execution>
        <id>stats</id>
        <phase>package</phase>
        <goals>
          <goal>stats</goal>
        </goals>
      </execution>
    </executions>
    </plugin>
  </plugins>
</build>


1 commentaires

Question muette: Pourquoi définissez-vous des exécutions dans votre Fresbugs-maven-plugin Déclaration?



3
votes

Suivre les concepts ci-dessus, j'ai soulevé cette question sur le tracker Maven Findbugs. http://jira.codehaus.org/browse/mfindbugs-118 . J'ai également codé et soumis un correctif qui affiche Total des bogues pour chaque projet. Il pourrait facilement être modifié pour obtenir d'autres détails.

Le code ignore les projets spécifiés comme producteurs de sorties POM et ignore également les projets dont les POMS spécifient VRAI dans leur configuration de FindBugs. Nous exécutons une grande construction multicouille Maven avec le patch appliqué. P>

avec le patch appliqué Vous exécutez MVN Findbugs: Vérifiez et vous obtenez quelque chose comme la sortie suivante (sortie obscurcie pour protéger le coupable :): p>

[INFO] Summary
[INFO] -------
[INFO] C:\PATH\Abstraction\PalDefinitions\target/findbugsXml.xml  4
[INFO] C:\PATH\System\target/findbugsXml.xml  19
[INFO] C:\PATH\ApplicationLayer\target/findbugsXml.xml  13
[INFO] C:\PATH\Support\ServiceStub\target/findbugsXml.xml  11
[INFO] C:\PATH\Support\MultiPlatform\target/findbugsXml.xml  10
[INFO] C:\PATH\Support\Serializer\target/findbugsXml.xml  19
[INFO] C:\PATH\Support\Brander\target/findbugsXml.xml  19
[INFO] C:\PATH\PlatformAbstraction\Pal1\target/findbugsXml.xml  8
[INFO] C:\PATH\PlatformAbstraction\Pal2\target/findbugsXml.xml  0
[INFO] C:\PATH\PlatformAbstraction\Pal3\target/findbugsXml.xml  0
[INFO] C:\PATH\PlatformAbstraction\Pal4\target/findbugsXml.xml  0
[INFO] C:\PATH\Framework\Common\target/findbugsXml.xml  12
[INFO] C:\PATH\Framework\legacyFramework\target/findbugsXml.xml  7
[INFO] C:\PATH\Framework\UIFramework\target/findbugsXml.xml  7
[INFO] C:\PATH\ExecutionLayer\Stub\target/findbugsXml.xml  0
[INFO] C:\PATH\ExecutionLayer\BB\BB\target/findbugsXml.xml  1
[INFO] TOTAL = 130
[INFO] -------
[INFO] Number of bugs 130 falls BELOW summaryThreshold 260. Check OK


2 commentaires

Le lien vers Jira Bug est cassé


Il suffit d'utiliser la version 2.5 ou plus du plugin.



4
votes

J'utilise ce piratage, basé sur Maven-Groovy-Plugin:

<plugin>
  <groupId>org.codehaus.groovy.maven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.0-rc-5-SNAPSHOT</version>
  <executions>
    <execution>
      <phase>prepare-package</phase>
      <goals>
        <goal>execute</goal>
      </goals>
      <configuration>
        <source>
          def file = new File("${project.build.directory}/findbugsXml.xml")
          if (!file.exists()) {
            fail("Findbugs XML report is absent: " + file.getPath())
          }
          def xml = new XmlParser().parse(file)
          def bugs = xml.BugInstance
          def total = bugs.size()
          if (total &gt; 0) {
            log.info("Total bugs: " + total)
            for (i in 0..total-1) {
              def bug = bugs[i]
              log.info(
                bug.LongMessage.text()
                + " " + bug.Class.'@classname'
                + " " + bug.Class.SourceLine.Message.text()
              )
            }
          }
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>


0 commentaires

0
votes

Vous pouvez le faire avec Violations Maven Plugin . Il est configuré avec des modèles pour identifier les fichiers de rapport sur le système de fichiers. Il doit être exécuté après les tremblements français ou tout autre outil d'analyse de code statique.

Ce sera

  • Imprimez les violations dans le journal de construction.
  • échoue éventuellement à la construction si le nombre de violations trouvées est supérieur à un nombre configuré.

0 commentaires