Cómo lanzar Crap4j desde Ant

0
7473

Cómo lanzar Crap4j desde Ant

 

1. Introducción

En adictosaltrabajo ya os hemos hablado de Crap4j, una implementación de la métrica CRAP (Change Risk Analisys and Predictions), algo que en castellano podriamos traducir como «Análisis y Predicciones sobre los Riesgos de realizar Cambios», os hemos explicado en qué consiste dicha métrica y os hemos explicado cómo instalar y utilizar el plugin de Crap4j para Eclipse. Podeis acceder al tutorial donde ya expliqué todo ello pulsando aquí.

Sin embargo, ¿sólo podemos utilizar Crap4j y todas sus ventajas si tenemos Eclipse?, ¿no podemos encontrar código «difícilmente mantenible» si usamos otro IDE, o incluso si no usamos ninguno?. Por suerte el equipo de Crap4j pensó en ello y permite la ejecución de su aplicación a través del archiconocido Ant.

En este tutorial explicaré cómo lanzar Crap4j desde ant en un proyecto desarrollado con maven, y menciono lo de maven simplemente por la estructura de directorios que tendrá el proyecto. Si quereis saber más sobre Crap4j visitad el tutorial enlazado anteriormente o el blog de Aberto Savoia.

 

2. Entorno

 

3. Instalación

Lo primero que hacermos es bajar la distribución para Ant de Crap4j desde esta URL: http://crap4j.org/downloads/ant_download.html. Como podeis ver es un jar y ocupa unos 7 MB.

Una vez descargado lo descomprimimos con cualquier aplicación que pueda descomprimir zip: 7-Zip, WinZip, Ark, FileRoller, Winrar, WinAce, etc. y lo dejamos en el directorio donde queramos instalarlo, por ejemplo en /home/raul/crap4j

 

Imagen 1. Contenido del JAR

 

2. JAR descomprimido en el directorio /home/raul/crap4j

 

Con esto ya tenenos descargado e instalado Crap4j, ahora sólo faltaria instalar Ant, cuya instalación presupongo y no cubro en este tutorial.

 

4. Ejecución

Si mirais dentro del directorio doc/ dentro de la instalación de Crap4j vereis un fichero llamado example_build.xml que servirá de plantilla para que creemos nuestros propios build.xml con los que lanzar Crap4j a través de Ant. Su contenido es el siguiente:




	
	
	
	
	
		
			
				
			
		
	

	
	
	
	
		
	

	
	
		
			
			
				
				
			
			
			
				
				
			
			
			
				
				
				
				
			
			
			
				
				
					
				
				
				               
			
		
		
	

Sin embargo este fichero xml tiene cosas que, a priori, no nos interesan, pero sin embargo es muy util tenerlo como referencia.

Como ya comenté anteriomente en este tutorial vamos a lanzar Crap4j sobre un proyecto que utilice maven. De nuevo indico que, aunque maven sea totalmente independiente a Crap4j, lo menciono porque la estructura de directorios del proyecto va a ser la propuesta por maven:

src/main/java Application/Library sources
src/main/resources Application/Library resources
src/main/filters Resource filter files
src/main/assembly Assembly descriptors
src/main/config Configuration files
src/main/webapp Web application sources
src/test/java Test sources
src/test/resources Test resources
src/test/filters Test resource filter files
src/site Site
LICENSE.txt Project’s license
README.txt Project’s readme

Es decir:

  • El código fuente del proyecto estará en src/main/java
  • Los test en src/test/java.
  • Las librerias necesarias para la compilación del proyecto estarán en el repositorio local de maven, en mi caso /home/raul/.m2/repository/

Aparte de estos directorios vamos a crearnos uno propio en el raíz de proyecto y lo llamaremos ‘crap4j‘ y ahi crearemos el fichero build.xml que utilizará ant para lanzar Crap4j, quedando la jerarquia de directorios de la siguiente manera;

 

 

Teniendo en cuenta las rutas a los directorios que he mencionado anteriormente, el fichero build.xml quedará de esta forma:




	
	
	
	
	
		
			
				
			
		
	

	
	
		

						
			
				
			
			
			
			
				
			
			
			
			
				
			

			
			
				
					
				
			
					
		
	

Donde:

Aqui se debe indicar la ruta donde hayais descomprimido Crap4j



No lo tocamos, es la definicion de la tarea ant

	
	
		
			
				
			
		
	

Se configura la ejecucion de Crap4j:

  1. Se indica cuál es el directorio base (que está configurado como {basedir})
  2. Dónde se van a dejar los resultados de la ejecucion de Crap4j («agitar/reports/crap4j«)
  3. Si de deben omitir los test (por defecto a false)
  4. Si se deben mostrar las trazas de debug al ejecutar Crap4j (por defecto a false)
	
	
		
		...
		
	

Se indica cuál es el directorio o directorios donde encontrar las clases compiladas (sigue la jerarquia de maven)

				
	
		
	

Se indica cuál es el directorio o directorios donde encontrar el codigo fuente del proyecto (sigue la jerarquia de maven)

	
	
		
	

Se indica cuál es el directorio o directorios los test a ejecutar sobre el codigo compilados (sigue la jerarquia de maven)


	
	
		
	

Se indica cuál es el directorio o directorios donde encontrar las librerias utilizadas por nuestro proyecto (repositorio de maven)

	
	
		
			
		
	

Esta es una configuración de ejemplo que debereis adaptar si vuestro proyecto sigue otra jerarquia de directorios.

 

4. Ejecucion

Nos dirigimos al directorio /home/raul/autentia-project/crap4j, donde hemos creado nuestro fichero build.xml y ejecutamos ant:

$ ant
Buildfile: build.xml

run-crap4j:
[crap4j] Buildfile: /home/raul/autentia-project/crap_build.xml
[crap4j]
[crap4j] run-tests:
[crap4j] [super-runner] Running com.autentia.project.entity.CodeTest
[crap4j] [super-runner] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0,193 sec
[crap4j] [super-runner] Running com.autentia.project.entity.DetectionTest
[crap4j] [super-runner] Tests run: 11, Failures: 0, Errors: 0, Time elapsed: 0,419 sec
[crap4j] [super-runner] Running com.autentia.project.entity.DetectionTypeGroupTest
[crap4j] [super-runner] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0,582 sec
[crap4j] [super-runner] Running com.autentia.project.entity.DetectionTypeTest
[crap4j] [super-runner] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 0,278 sec
[crap4j] [super-runner] Running com.autentia.project.entity.EngineTest
[crap4j] [super-runner] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 0,184 sec
[crap4j] [super-runner] Running com.autentia.project.entity.ProjectReportFileUrlTest
[crap4j] [super-runner] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0,424 sec
[crap4j] [super-runner] Running com.autentia.project.entity.ProjectTest
[crap4j] [super-runner] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0,367 sec
[crap4j] [super-runner] Running com.autentia.project.entity.ScanTest
[crap4j] [super-runner] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0,244 sec
[crap4j] [super-runner] Running com.autentia.project.entity.SourceTest
[crap4j] [super-runner] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0,448 sec
[crap4j] [super-runner] Running es.raulexposito.jaro.core.test.util.EntityUtilTest
[crap4j] [super-runner] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0,202 sec
[crap4j]
[crap4j] agitar-all:
[crap4j]
[crap4j] BUILD SUCCESSFUL
[crap4j] Total time: 17 seconds
[crap4j] Ant exited with status 0

Tras ello, podeis ver que crea un par de cosas:

 

 

  1. Un fichero crap_build.xml en el raiz del proyecto que podemos ignorar.
  2. Los resultados de la ejecucion de Crap4j en el directorio agitar/reports/crap4j

Para ver los resultados solo deberemos abrir con un navegador el fichero index.html del directorio agitar/reports/crap4j

Si estais usando linux y no pudieseis generar los informes por culpa de este error:

Xlib: connection to «:0.0» refused by server
Xlib: No protocol specified

[crap4j] java.lang.InternalError: Can’t connect to X11 window server using ‘:0’ as the value of the DISPLAY variable.
[crap4j] at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
[crap4j] at sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:53)
[crap4j] at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:142)
[crap4j] at java.security.AccessController.doPrivileged(Native Method)

lanzad este comando antes de invocar ant:

$ export ANT_OPTS=-Djava.awt.headless=true

 

5. Conclusiones

Como podeis ver no estamos «condenados» a usar Eclipse para poder utilizar la información proporcionada por Crap4j, ya que los autores de esta util herramienta nos permiten usarla de manera sencilla y configurable desde Ant.

Espero que os sea de utilidad.

 

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad