Codice Maven Quality Code

Nella programmazione web creare un’applicazione che funzioni non è sufficiente. Il miglioramento della qualità del codice, invece, è molto importante per la robustezza e il mantenimento del programma. In questa guida verrà illustrato come generare report di qualità del codice per un progetto Maven, ovvero il Maven Quality Code.

Come creare progetti e Report con Maven

Maven offre l’opportunità di creare siti HTML che descrivono il proprio progetto. Per creare un sito progetto con Maven, digitare il comando mvn site. Una volta fatto, verrà aperto il file target/site/index.html,che consentirà di vedere il sito:


Il sito progetto generalmente, contiene informazioni tecniche riguardanti l’architettura del progetto (dipendenze, plugin, ecc.). Da qui sarà possibile arricchire i report generati dal Maven plug-in, come definiti nel file di configurazione del progetto.

Codice d’analisi e reporting Reporting Plug-ins per Maven

Di seguito è riportato un estratto di un file pom.xml che può essere incorporato nel file di configurazione. Lo stesso codice è caratterizzato da un paio di plug-in indipendenti per l’analisi del codice e del reporting. Ognuno di questi costituisce una relazione specifica sul sito del progetto:

<build>
  <plugins>
    <plugin>
      <!-- The Failsafe Plugin is designed to run integration tests while the 
      Surefire Plugin is designed to run unit tests. -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-failsafe-plugin</artifactId>
      <version>2.19.1</version>
      <executions>
        <execution>
          <goals>
            <goal>integration-test</goal>
            <goal>verify</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
  <reporting>
    <plugins>
      <plugin>
        <!-- The JXR Plugin generates a cross-reference of the project's sources. -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jxr-plugin</artifactId>
      <version>2.5</version>
    </plugin>
    <plugin>
      <!-- The Javadoc Plugin generates javadocs using the Javadoc tool. -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.10.3</version>
      <configuration>
        <additionalparam>-Xdoclint:none</additionalparam>
      </configuration>
    </plugin>
    <plugin>
      <!-- The Surefire Report Plugin generates reports for unit and integration 
        tests. -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-report-plugin</artifactId>
      <version>2.19.1</version>
    </plugin>
    <plugin>
      <!-- The Checkstyle Plugin generates a report regarding the code style 
        used by the developers. -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <version>2.17</version>
    </plugin>
    <plugin>
      <!-- The PMD plugin generates PMD and CPD reports using the PMD code 
        analysis tool. -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-pmd-plugin</artifactId>
      <version>3.6</version>
      <configuration>
        <skipEmptyReport>false</skipEmptyReport>
        <linkXref>true</linkXref>
        <minimumTokens>50</minimumTokens>
        <rulesets>
          <ruleset>rulesets/java/android.xml</ruleset>
          <ruleset>rulesets/java/basic.xml</ruleset>
          <ruleset>rulesets/java/braces.xml</ruleset>
          <ruleset>rulesets/java/clone.xml</ruleset>
          <ruleset>rulesets/java/codesize.xml</ruleset>
          <ruleset>rulesets/java/comments.xml</ruleset>
          <!-- <ruleset>rulesets/java/controversial.xml</ruleset> -->
          <ruleset>rulesets/java/coupling.xml</ruleset>
          <ruleset>rulesets/java/design.xml</ruleset>
          <ruleset>rulesets/java/empty.xml</ruleset>
          <ruleset>rulesets/java/finalizers.xml</ruleset>
          <ruleset>rulesets/java/imports.xml</ruleset>
          <ruleset>rulesets/java/j2ee.xml</ruleset>
          <ruleset>rulesets/java/javabeans.xml</ruleset>
          <ruleset>rulesets/java/junit.xml</ruleset>
          <ruleset>rulesets/java/logging-jakarta-commons.xml</ruleset>
          <ruleset>rulesets/java/logging-java.xml</ruleset>
          <ruleset>rulesets/java/migrating.xml</ruleset>
          <ruleset>rulesets/java/migrating_to_13.xml</ruleset>
          <ruleset>rulesets/java/migrating_to_14.xml</ruleset>
          <ruleset>rulesets/java/migrating_to_15.xml</ruleset>
          <ruleset>rulesets/java/migrating_to_junit4.xml</ruleset>
          <ruleset>rulesets/java/naming.xml</ruleset>
          <ruleset>rulesets/java/optimizations.xml</ruleset>
          <ruleset>rulesets/java/strictexception.xml</ruleset>
          <ruleset>rulesets/java/strings.xml</ruleset>
          <ruleset>rulesets/java/sunsecure.xml</ruleset>
          <ruleset>rulesets/java/typeresolution.xml</ruleset>
          <ruleset>rulesets/java/unnecessary.xml</ruleset>
          <ruleset>rulesets/java/unusedcode.xml</ruleset>
        </rulesets>
      </configuration>
    </plugin>
    <plugin>
      <!-- FindBugs Plugin looks for bugs in Java programs. It is based on 
        the concept of bug patterns. -->
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>findbugs-maven-plugin</artifactId>
      <version>3.0.0</version>
    </plugin>
  </plugins>
</reporting>

Nota Bene: Questo plug-in è dato come esempio. Per scoprire la lista completa dei plug-in disponibili cliccare qui: plug-in Maven.

Come generare report in Maven

Prima di generare il proprio sito progetto, è necessario eseguire un test unitario e integrativo per ogni nuovo plug-in che si desidera inserire. È possibile, ad esempio, utilizzare il comando mvn verify siteper per generare un sito progetto contenente i risultati dei test di unitario e di integrativo.

Come visualizzare report in Maven

Per visualizzare un report in Maven basterà cliccare su Il mio Progetto, Documentazione progetto e Report Progetto (My Project > Project Documentation > Project Reports):

Source XRef

Questo report consente la visualizzazione del codice sorgente del progetto:

Il test Source XRef

Questo consente di visualizzare una versione di riferimenti incrociati del codice sorgente, chiamato test source code.

Java Docs

Questo report consente di visualizzare la documentazione JavaDoc API:

Test Java Docs

Questo report contiene la documentazione del Test JavaDoc API.

Surfire Report

Il report visualizza i risultati dell’ unit testing:

Failsafe Report

Questo riporta i risultati per l’integration testing.

Checkstyle

Infine il checkstyle presenta la lista di tutte le violazioni delle regole di sintassi standard, in Java:

Le regole presenti dietro questi errori possono essere modificate attraverso una Custom Checkstyle Checker Configuration.

CPD

Questo report evidenzierà i blocchi di codice duplicati nel progetto:


Si consiglia di utilizzare il parametro

<minimumTokens>50</minimumTokens>

per impostare la lunghezza minima del codice.

PDM

Maven riporta costruzioni di codice insufficienti (che violano il PMD Ruleset attuale) e che possono, potenzialmente produrre errori:


È possibile utilizzare il parametro

<rulesets>

per definire il PMD Ruleset.

FindBugs

Maven crea un codice sorgente con la FindBugs Library. Questo report esteso elenca tutti i possibili errore del proprio codice:

Compilare report con SonarQube

SonarQube èuna piattaforma open source che consente di compilare le informazioni da vari report, valutando la qualità del codice e confrontando il proprio progetto con altri.

Foto: © Pixabay.

I nostri contenuti sono creati in collaborazione con esperti di high-tech, sotto la direzione di Jean-François Pillou, fondatore di CCM.net. CCM è un sito di high-tech leader a livello internazionale ed è disponibile in 11 lingue.
Potrebbe anche interessarti
Il documento intitolato « Codice Maven Quality Code » dal sito CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.
Unisciti ALLA COMMUNITY