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. 1077 mostra un esempio di report analizzato con la console di SpotBugs.

../../../_images/SpotBugs_gui.png

Fig. 1077 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.7.3
           -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