Statische Codeanalysen mit Maven 2

Zur Qualitätssicherung eines Softwareprojekts gehören neben Unittests auch statische Codeanalysen. Tools wie Checkstyle, Findbugs oder PMD untersuchen Java-Klassen und bewerten den Code anhand verschiedener Metriken.

Zwar können diese Checks einen manuellen Codereview nicht ersetzen, aber Standardfehler und bekannte Anti-Patterns werden zuverlässig erkannt. Für jedes der genannten Tools gibt es ein Eclipse-Plugin, das die betreffenden Codestellen markiert. Die Anzeige der Fehler ist aber nicht ausreichend: Bei schwerwiegenden Verstössen soll auch der Build scheitern, ansonsten besteht die Gefahr, dass der Code nicht korrigiert wird. Aber wie kann man das umsetzen ?

Mit Maven 2 geht dies einfach mit einer Plugin-Konfiguration innerhalb des “build”-Elements.

Hier ein Projektbeispiel für die PMD Analyse:

  1. <build>
  2. <plugins>
  3. <plugin>
  4.    <groupId>org.apache.maven.plugins</groupId>
  5.    <artifactId>maven-pmd-plugin</artifactId>
  6.    <configuration>
  7.       <sourceEncoding>${file.encoding}</sourceEncoding>
  8.       <minimumTokens>100</minimumTokens>
  9.       <targetJdk>${java.target.version}</targetJdk>
  10.       <failOnViolation>true</failOnViolation>
  11.       <failurePriority>2</failurePriority>
  12.    </configuration>
  13.    <version>${pmd.version}</version>
  14.    <executions>
  15.       <execution>
  16.          <goals>
  17.             <goal>check</goal>
  18.             <goal>cpd-check</goal>
  19.          </goals>
  20.       </execution>
  21.    </executions>
  22. </plugin>
  23. </plugins>
  24. </build>

Mit dieser einfachen Konfiguration wird sichergestellt, dass der Code keine PMD-Verstösse der Kategorie 1 und 2 enthält. Zudem ist garantiert, dass der Build bei Copy&Paste von 100 Wörtern (bzw. Tokens) scheitert. Praktisch !

Bookmark and Share

Leave a Reply