PORTFOLIO INGENIERÍA DEL SOFTWARE II Apellidos y Nombre

Transcripción

PORTFOLIO INGENIERÍA DEL SOFTWARE II Apellidos y Nombre
PORTFOLIO INGENIERÍA DEL SOFTWARE II
Apellidos y Nombre: Arribas Suárez, Francisco
Título del portfolio: Sonar
Fuente: http://docs.codehaus.org/display/SONAR/Documentation
1. INTRODUCCIÓN
Sonar es una plataforma de código abierto que sirve para gestionar la calidad del
código. Por tanto Sonar engloba 7 aspectos principales de la calidad de nuestro código:
Es una aplicación web que está basada en reglas, rangos, exclusiones, alertas. Se nos
permite una configuración online, dispone de una base de datos y permite combinar
métricas en conjunto.
2. INSTALACIÓN
Lo primero es descargar la última versión de la herramienta de la URL
http://sonar.codehaus.org/ y descomprimir el fichero en algún lugar de nuestro disco al
que conoceremos a partir de este momento como SONAR_HOME.
Abrimos un terminal (en nuestro caso realizaremos la instalación en Ubuntu),
navegamos hasta SONAR_HOME/bin/sistema_operativo y ejecutamos el fichero
llamado sonar dependiendo de nuestro sistema operativo.
./ sonar.sh start
Para parar el sonar tan solo tendríamos que usar el comando stop.
Se arrancara el producto con parámetros por defecto, esto quiere decir, que va a
utilizar la base de datos de Sonar(Derby) y el puerto 9000.
Una vez haya arrancado podemos acceder a la URL http://localhost:9000 para
ver la pantalla de bienvenida del Sonar.
Ya tendríamos funcionando Sonar con su base de datos embebida, no obstante si
queremos usar por ejemplo nuestra base de datos debemos acceder al fichero
SONAR_HOME/conf/sonar.properties, y realizar los cambios comentando la línea
correspondiente en Embedded database y descomentando la línea correspondiente en
MySQL 5.x/6.x.
El archivo en sí es bastante autoexplicativo.
# WEB SETTINGS - STANDALONE MODE ONLY
# Listen host/port and context path (for example / or /sonar). Default values are 0.0.0.0:9000/.
#sonar.web.host:
0.0.0.
#sonar.web.port:
9000
#sonar.web.context:
/
# DATABASE
# IMPORTANT : the embedded database H2 is used by default.
----- Credentials
# Permissions to create tables and indexes must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username:
sonar
sonar.jdbc.password:
sonar
#----- Embedded database H2
# Note : it does not accept connections from remote hosts, so the
# sonar server and the maven plugin must be executed on the same host.
# Comment the following line to deactivate the default embedded database.
sonar.jdbc.url:
jdbc:h2:tcp://localhost:9092/sonar
#sonar.jdbc.driverClassName:
org.h2.Driver
#----- MySQL 5.x/6.x
# Comment the embedded database and uncomment the following line to use MySQL
#sonar.jdbc.url:
jdbc:mysql://localhost:3306/sonar?
Una vez hemos establecido las propiedades con las que va a trabajar, el siguiente paso
es generar el .war.
.build-war.sh
3. ANALIZANDO UN PROYECTO EN JAVA
Es importante recordar que para analizar un proyecto con Sonar este tiene que estar
creado con Maven. Entonces lo único que tenemos que hacer es ejecutar:
mvn sonar: sonar
En caso de haber cambiado las condiciones por defecto, tenemos que configurar Maven
para eso editamos el fichero .m2/settings.xml y creamos un perfil para sonar de esta
manera. El ejemplo se ha realizado para una base de datos MYSQL.
<settings>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- EXAMPLE FOR MYSQL -->
<sonar.jdbc.url>
jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
</sonar.jdbc.url>
<sonar.jdbc.driverClassName>com.mysql.jdbc.Driver</sonar.jdbc.driverClassName>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
</properties>
</profile>
</profiles>
</settings>
Entrando en el navegador en la dirección localhost:9000, accedemos directamente al
panel de control, previamente seleccionando nuestro proyecto prueba-sonar.
Son numerosas las métricas que Sonar nos muestra por pantalla.
En “Violations” nos indica los errores que tiene nuestro código dividido en
niveles de gravedad. Podemos asegurar que nuestro código está siguiendo buenas
prácticas y mejorar su eficiencia, usabilidad y mantenibilidad.
Esta pantalla también da información del resultado de los test y de su cobertura; así
como del porcentaje de líneas que son comentarios y de líneas duplicadas en el código.
4. MÉTRICAS
Un resumen de las métricas más destacadas son estas, que las podemos clasificar por:
TAMAÑO
Líneas físicas Número de retornos de carro.
Las líneas de comentario Número de javadoc, multi-comentario y líneas de comentario
de una sola.
Las líneas de código
Paquetes Número de paquetes
Clases Número de clases, como clases anidadas, interfaces, enumeraciones y
anotaciones.
Los descriptores de acceso Número de métodos getter y setter utilizados para obtener
(lectura) o conjunto (por escrito) una propiedad de clase.
Métodos Número de métodos.
PRUEBAS
Las pruebas unitarias Número de pruebas unitarias.
Duración de las pruebas unitarias Tiempo para ejecutar las pruebas unitarias
DUPLICACIÓN
Líneas duplicadas Número de líneas físicas tocado por una duplicación
DISEÑO
La falta de cohesión de los métodos. LCOM4
COMPLEJIDAD
Complejidad Número Complejidad ciclomática
Complejidad promedio según el método Número medio complejidad ciclomática
REGLAS
Violaciones. Número total de Violaciones
SCM
Autores de línea* El último committer en cada línea de código
5. EXTENSIONES
Sonar permite extensiones a través de plugins para abarcar nuevos lenguajes de
programación, para añadir nuevas reglas o para añadir nuevas métricas. Algunas de
ellos son los siguientes:
Timeline: Muestra el histórico utilizando el gráfico de línea del tiempo de Google:
Google Timeline Chart.
Motion chart: Muestra los las métricas de los proyectos usando los gráficos animados
de Google Motion Chart.
Quality Index: Calcula un índice de calidad global basado en reglas de programación,
estilo, complejidad y la cobertura de pruebas unitarias.
Radiator: Muestra las métricas utilizando un treemap que puede ser explorado.
PDF Report: genera un informe en formato PDF con los resultados del análisis de los
proyectos.
SCM Activity: Recopila y registra información de los “commits” utilizando los datos
de SCM.
*con plugin SCM

Documentos relacionados