.. _releaseProcessGovWay_staticCodeAnalysis_spotbugs_maven:
SpotBugs Maven Plugin
~~~~~~~~~~~~~~~~~~~~~
Effettuato il checkout dei `dei sorgenti del progetto GovWay `_, è possibile avviare manualmente l'analisi statica del codice utilizzando il seguente comando maven nella radice del progetto:
::
mvn verify -Dspotbugs=verify -Dspotbugs.home=PATH_ASSOLUTO_TOOLS_SPOTBUGS -Dtestsuite=none -Dpackage=none -Dowasp=none
Come prerequisito all'esecuzione deve essere effettuato il download dell'ultima release del tool `SpotBugs `_.
Al termine dell'analisi viene prodotto un report nella directory 'spotbugs-reports' per ogni modulo analizzato.
L'analisi viene effettuata su tutti i sorgenti descritti nella sezione :ref:`releaseProcessGovWay_staticCodeAnalysis_src`.
Gli identificativi dei moduli sono classificati come segue:
- utilità di base: utils-commons, utils-generic-project;
- runtime di GovWay: runtime-message, runtime-core, runtime-protocol, runtime-monitor, runtime-security, runtime-pdd;
- profili di interoperabiltà: protocol-as4, protocol-modipa, protocol-sdi, protocol-spcoop, protocol-trasparente;
- console web: web-lib-audit, web-lib-mvc, web-lib-queue, web-lib-users, web-loader, web-govwayConsole, web-govwayMonitor;
- api di configurazione e monitoraggio: rs-config, rs-monitor;
- batch: batch-statistiche, batch-runtime-repository;
- timer applicativi: timer-statistiche;
- cli: cli-config-loader, cli-govway-vault, cli-template-scan.
I reports prodotti nella directory 'spotbugs-reports' sono analizzabili tramite la `SpotBugs GUI `_ avviabile tramite lo script presente in `tools/spotbugs/startSpotBugsAnalysisConsole.sh `_. La figura :numref:`SpotBugs_gui` mostra un esempio di report analizzato con la console di SpotBugs.
.. figure:: ../../_figure_console/SpotBugs_gui.png
:scale: 60%
:name: SpotBugs_gui
Report analizzato tramite la console di SpotBugs
Per produrre un report in un formato direttamente fruibile senza dove utilizzare la `SpotBugs GUI `_ è possibile indicare il formato desiderato tramite il parametro 'spotbugs.outputType'.
::
mvn verify -Dspotbugs=verify -Dspotbugs.outputType=html -Dspotbugs.home=PATH_ASSOLUTO_TOOLS_SPOTBUGS -Dtestsuite=none -Dpackage=none -Dowasp=none
I formati supportati sono i seguenti:
- xml:withMessages: xml che contiene anche messaggi 'human-readable';
- html: pagina HTML con 'default.xsl' come stylesheet;
- text: formato testuale;
- emacs: formato 'Emacs error message';
- xdocs: formato xdoc XML da usare con Apache Maven.
Per evitare la verifica di alcuni moduli è possibile utilizzare la proprietà 'spotbugs.skipPackages'.
L'esempio seguente attiva l'analisi dei sorgenti solamente per le utilità di base e i componenti di runtime di GovWay:
::
mvn verify -Dspotbugs=verify
-Dtestsuite=none -Dpackage=none -Dowasp=none
-Dspotbugs.home=/tmp/spotbugs-4.9.8
-Dspotbugs.skipPackages=protocol-as4,protocol-modipa,protocol-sdi,protocol-spcoop,protocol-trasparente,web-lib-audit,web-lib-mvc,web-lib-queue,web-lib-users,web-loader,web-govwayConsole,web-govwayMonitor,rs-config,rs-monitor,batch-statistiche,batch-runtime-repository,timer-statistiche,cli-config-loader,cli-govway-vault,cli-template-scan