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>
4 Réponses :
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> Pour emballer ce code, ajoutez-le au dossier SRC / Main / Main / Java de un MavenProject avec un pom comme ceci: p> 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> 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>
Question muette: Pourquoi définissez-vous des exécutions dans votre Fresbugs-maven-plugin code> Déclaration?
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
Le lien vers Jira Bug est cassé
Il suffit d'utiliser la version 2.5 ou plus du plugin.
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 > 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>
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. P>
Ce sera p>
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