style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Maven para buena calidad de codigo

Cuando trabajas en un equipo con varias personas en ocasiones la calidad del codigo empieza a disminuir proporcionalmente al aumento de lineas de codigo, por esta razon me puse a investigar como mantener la calidad del codigo sin tener que revizarlo por ti mismo de una forma automatizada y que no te deje pasar o compilar si no cumples con los requisitos

Estos plugins estan basados para una aplicacion web, eso no significa que no lo puedas usar para crear otro tipo de archivo.

1.- Analizar el codigo

Para esto se va a utilizar findbugs que ya se puede usar con la version 8 de java y este seria el fragmento de codigo para usarlo

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <threshold>High</threshold>
                    <effort>Default</effort>
                    <skipEmptyReport>false</skipEmptyReport>
                    <findbugsXmlOutputDirectory>${project.build.directory}/findbugs</findbugsXmlOutputDirectory>
                </configuration>
                <executions>                    
                    <execution>
                        <id>analyze-compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Con esto findbugs analizara el codigo y mostrara la salida, en el caso de que algo este mal, marcara error en el build, otro buen analizador de codigo es PMD entre algunas de las cosas buenas que tiene es que identifica el codigo repetido, esto lo hace mediante tokens y esta es la configuracion.

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.5</version>
                <configuration>
                    <linkXref>true</linkXref>
                    <sourceEncoding>utf-8</sourceEncoding>
                    <minimumTokens>40</minimumTokens>
                    <targetJdk>1.8</targetJdk>
                    <printFailingErrors>true</printFailingErrors>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--<goal>add-source</goal>-->
                            <goal>check</goal>
                            <goal>cpd-check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Checa que los tokens esta en 40, obviamente lo puedes configurar a tu gusto.

2.- Formato del codigo

Quien no odia el tipo de desarrollador que por querer hacer las cosas mas rapidas hace mal formato en el codigo, para eso vamos a usar checkstyle

             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.9.1</version>
                <executions>
                    <execution>
                        <id>checkstyle</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <configuration>
                            <failOnViolation>false</failOnViolation>
                            <logViolationsToConsole>true</logViolationsToConsole>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

A veces checkstyle es muy estricto en sus reglas y no te deja compilar por que hiciste un pequeño mal codigo, por ejemplo hay si linea de codigo que mide mas de 80 caracteres, por eso la configuracion esta en false para no ser tan estrictos, pero la salida se muestra en consola de todas formas.

3.- Javadoc

checkstyle tambien checa que exista documentacion en nuestro codigo y eso lo vamos a aprovechar generando automaticamente la documentacion para eso utilizaremos javadoc

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.10.1</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

4.- Compilacion

Nunca esta demas compilar y mostrar los errores o posibles metodos/clases que ya no debemos de usar para eso le indicaremos al compilador que nos lo muestre

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java-version}</source>
                    <target>${java-version}</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                    <showDeprecation>true</showDeprecation>
                    <showWarnings>true</showWarnings>                    
                </configuration>
            </plugin>

Todos los errores como deprecation, warnings y otros seran mostrados en la consola.

Si esto lo aplicamos a un codigo que apenas empieza es mas facil mantener la calidad del codigo, cuando ya se escribieron cientos/miles de lineas de codigo obviamente seria una pesadilla hacer el javadoc, cambiar el formato y esas cosas, aun que nunca esta demas hacerlo.

Por ultimo tenemos a proguard este es usado para ofuscar el codigo, desafortunadamente no lo pude integrar con una aplicacion web, por esa razon no hay un fragmento de xml que lño muestre

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de skuarch

objetivo del post

el objetivo del post es mostrar algunos plugins que maven tiene para poder conservar la calidad de codigo, si alguien se sabe algunos otros por favor compartelos con la comunidad

Imagen de arterzatij

Sonar No es un plugin como

Sonar

No es un plugin como tal pero es muy bueno.

sonar

Imagen de skuarch

sonar

sonar tiene cosas que findbug y pmd no muestra, se ve que es muy util, lo incluire en el post, gracias

Imagen de ezamudio

codenarc

Si usan groovy, hay una cosa llamada codenarc que hace análisis estático del código para encontrar cosas que se le van al compilador (o sea todo).

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">