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 Sorgenti soggetti a controllo qualità.
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;
cli: cli-config-loader, cli-govway-vault.
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 Fig. 1079 mostra un esempio di report analizzato con la console di SpotBugs.

Fig. 1079 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.8.6
-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,cli-config-loader,cli-govway-vault