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&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