f?:@'.$&2& %g&1'210*%a'*5% h&$02'$$%!5&102$%!,ij · fecha...

7
Avenida de Castilla,1 - Edificio Best Point - Oficina 21B 28830 San Fernando de Henares (Madrid) tel./fax: +34 91 675 33 06 [email protected] - www.autentia.com Somos su empresa de Soporte a Desarrollo Informático. Ese apoyo que siempre quiso tener... 1. Desarrollo de componentes y proyectos a medida Tecnología Desarrollo Sistemas Gran Empresa Producción autentia Certificación o Pruebas Verificación previa RFP Concurso Consultora 1 Consultora 2 Consultora 3 Equipo propio desarrollo Piloto 3a 3b 1. Definición de frameworks corporativos. 2. Transferencia de conocimiento de nuevas arquitecturas. 3. Soporte al arranque de proyectos. 4. Auditoría preventiva periódica de calidad. 5. Revisión previa a la certificación de proyectos. 6. Extensión de capacidad de equipos de calidad. 7. Identificación de problemas en producción. 3. Arranque de proyectos basados en nuevas tecnologías ¿Qué ofrece Autentia Real Business Solutions S.L? Para más información visítenos en: www.autentia.com Compartimos nuestro conociemiento en: www.adictosaltrabajo.com Gestor portales (Liferay) Gestor de contenidos (Alfresco) Aplicaciones híbridas Tareas programadas (Quartz) Gestor documental (Alfresco) Inversión de control (Spring) BPM (jBPM o Bonita) Generación de informes (JasperReport) ESB (Open ESB) Control de autenticación y acceso (Spring Security) UDDI Web Services Rest Services Social SSO SSO (Cas) Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery JPA-Hibernate, MyBatis Motor de búsqueda empresarial (Solr) ETL (Talend) Dirección de Proyectos Informáticos. Metodologías ágiles Patrones de diseño TDD 2. Auditoría de código y recomendaciones de mejora 4. Cursos de formación (impartidos por desarrolladores en activo)

Upload: phunghanh

Post on 24-May-2018

214 views

Category:

Documents


1 download

TRANSCRIPT

Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)

tel./fax: +34 91 675 33 [email protected] - www.autentia.com

Somos su empresa de Soporte a Desarrollo Informático.Ese apoyo que siempre quiso tener...

1. Desarrollo de componentes y proyectos a medida

TecnologíaDesarrolloSistemas

Gran Empresa

Producción

autentia

Certificacióno Pruebas

Verificación previa

RFP Concurso

Consultora 1

Consultora 2

Consultora 3

Equipo propio desarrolloPiloto

3a

3b

1. Definición de frameworks corporativos.2. Transferencia de conocimiento de nuevas arquitecturas.3. Soporte al arranque de proyectos.4. Auditoría preventiva periódica de calidad.5. Revisión previa a la certificación de proyectos.6. Extensión de capacidad de equipos de calidad.7. Identificación de problemas en producción.

3. Arranque de proyectos basados en nuevas tecnologías

¿Qué ofrece Autentia Real Business Solutions S.L?

Para más información visítenos en: www.autentia.com

Compartimos nuestro conociemiento en: www.adictosaltrabajo.com

Gestor portales (Liferay)Gestor de contenidos (Alfresco)Aplicaciones híbridas

Tareas programadas (Quartz)Gestor documental (Alfresco)Inversión de control (Spring)

BPM (jBPM o Bonita)Generación de informes (JasperReport)ESB (Open ESB)

Control de autenticación y acceso (Spring Security)UDDIWeb ServicesRest ServicesSocial SSOSSO (Cas)

Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery

JPA-Hibernate, MyBatisMotor de búsqueda empresarial (Solr)ETL (Talend)

Dirección de Proyectos Informáticos.Metodologías ágilesPatrones de diseñoTDD

2. Auditoría de código y recomendaciones de mejora

4. Cursos de formación (impartidos por desarrolladores en activo)

Entra en Adictos a través de

Entrar

E-­mail

Contraseña

RegistrarmeOlvidé mi contraseña

Inicio Quiénes somos Formación Comparador de salarios Nuestros libros Más

» Estás en: Inicio Tutoriales Extendiendo las reglas de SonarQube con Xpath

Síguenos a través

de:

Catálogo de servicios

Autentia

Últimas Noticias

» Curso JBoss de Red Hat

» Si eres el responsable o lídertécnico, considératedesafortunado. No puedesculpar a nadie por ser gris

» Portales, gestores decontenidos documentales ydesarrollos a medida

» Comentando el libro Start-­upNation, La historia del milagroeconómico de Israel, de DanSenor & Salu Singer

» Screencasts deprogramación narrados enEspañol

Histórico de noticias

Últimos Tutoriales

» Primeros pasos con ApacheKafka

» Solución de problemascomunes con la integración demaven en Eclipse Luna.

» Integración de SonarQubeen Eclipse.

» Monitorización de ApacheTomcat con psi-­probe.

» Trident, un compañero de

Ver todos los tutoriales del autor

Jose Manuel Sánchez Suárez

Consultor tecnológico de desarrollo de proyectos informáticos.

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría yformación

Somos expertos en Java/J2EE

Fecha de publicación del tutorial: 2014-­10-­14 Tutorial visitado 6 veces Descargar en PDF

Extendiendo las reglas de SonarQube con Xpath.

0. Índice de contenidos.

1. Introducción.2. Entorno.3. AST y SSLR Toolkit.4. noServletsAllowed.5. noPropertyLocatorInicialized.6. Referencias.7. Conclusiones.

1. Introducción

SonarQube permite personalizar las reglas de análisis estático de código para cubrir nuestras necesidades de una maneramuy sencilla, bien importando reglas de FindBugs, bien creando las nuestras propias de diversas formas.

Podemos crear reglas para SonarQube en Java o usando directamente xpath definiendo las reglas desde la propia interfaz deusuario de administración.

Pero, ¿xpath no es un lenguaje de consulta de información en formato xml?, si y en este tutorial vamos a ver cómo obteneruna representación de una clase java en formato xml, según el formato AST (Abstract Syntax Tree), que permite obtener unarepresentación en forma de árbol del código fuente escrito en un lenguaje concreto de programación.

2. Entorno.

El tutorial está escrito y las pruebas realizadas con el siguiente entorno:

Hardware: Portátil MacBook Pro 15' (2.3 GHz Intel Core i7, 16GB DDR3).Sistema Operativo: Mac OS Mavericks 10.9.4SonarQube 4.3.3

3. AST y SSLR Toolkit.

Como comentábamos AST no es más de una representación en forma de árbol del código fuente de un determinado lenguajede programación, de modo tal, que cualquier clase java puede tener una representación en xml basada en dicho árbol.

Como tal, dicha información se puede parsear y, como consecuencia se puede consultar.

Podríamos usar un plugin para eclipse que permite acceder a una vista en formato AST de cualquier clase, si bien, el propioequipo de SonarQube ha creado un parser que permite realizar consultas de tipo xpath y proporciona un editor visual, untoolkit, que facilita la generación de una vista AST de una clase java y "jugar" con sentencias xpath sobre las mismas.

La descarga del ssrl toolkit la podemos realizar directamente desde el repositorio central de maven en forma de jarautoejecutable.

La interfaz es la siguiente, podemos pegar el código fuente de una clase en la parte superior izquierda o abrir directamente unfichero. En esa vista podemos modificar a mano el código y pulsando sobre "Parse Source Code" se mostrará a la derecha larepresentación xml de dicho código.

G E T A H E A D W I T H W S O 2 .Learn About the Latest IT Trends to Make Your Business Profitable!

viaje para tratar con Storm

Últimos Tutoriales del

Autor

» Solución de problemascomunes con la integración demaven en Eclipse Luna.

» Integración de SonarQubeen Eclipse.

» Monitorización de ApacheTomcat con psi-­probe.

» Spring Ldap: gestión detransacciones y configuraciónde un pool de conexiones

» Spring Ldap: operacionesbásicas haciendo uso delsoporte de plantillas

Se puede navegar sobre el mismo pulsando tanto en la represtanción del árbol de la derecha como en el código fuente de laizquierda estando ambos conectados.

En la parte derecha podemos pulsar sobre la pestaña "XML" para ver esa representación también en formato xml.

Gracias a esta herramienta podremos, haciendo uso de la parte inferior "XPath query", probar nuestras consultas xpath sobrela representación en formato xml de nuestras clases java.

4. noServletsAllowed.

Vamos a definir una primera regla en SonarQube, con una sentencia xpath, que nos permita comprobar la existencia deservlets dentro del código de nuestras aplicaciones;; imaginemos que estamos usando un framework MVC y no queremos quenuestros proveedores realicen entregas de funcionalidad fuera de los estándares predefinidos, y la inclusión de un servletdebería justificarse.

Un clase que implementa un servlet podría tener el siguiente código

Con el soporte del SSRL Toolkit, podemos abrir directamente el fichero o pegar su contenido y con el navegador de nodos dela derecha o pulsando directamente en cualquier punto de la clase a la izquierda podemos posicionarnos en el punto concretodel navegador.

Usando la zona de consulta de la parte inferior podemos escribir la sentencia xpath y probar tanto su sintaxis como elresultado de la ejecución de la misma.

Para comprobar que una clase no sea un servlet podemos usar una sentencia xpath que accediendo al identificador de laclase compruebe que no sea de uno de esos tipos, accediendo al nodeValue, que es el contenido textual del nodo.

Una vez disponemos de la sentencia xpath, podemos crear la regla en sonar y lo primero es acceder a nuestro "Quality Profile"y buscar la regla xpath

En la primera búsqueda puede que no lo localicemos y tengamos que pulsar sobre "+ 1 found in inactive rules"

Con ello encontraremos la siguiente regla y podremos pulsar sobre el enlace de la misma.

En la parte inferior debemos pulsar sobre el enlace "Copy rule"

En la siguiente pantalla podremos añadir la información relacionada con la regla a crear en la que incluimos la sentencia xpathdentro del campo correspondiente:

Una vez creada aparecerá en el listado de esta forma

y tendremos que pulsar sobre el checkbox para activarla

Cualquier proyecto que se analice, a partir de ese momento y que tenga asociado nuestro "Quality Profile", podría mostrar unerror con el nivel de criticidad asociado

y pulsando sobre el enlace correspondiente que nos lleve hasta el detalle de la violación se mostrará el detalle de la "Issue"con toda la información asignada en la creación de la regla al mismo.

5. noPropertyLocatorInitialized.

Vamos a crear una regla un poco más compleja teniendo en cuenta el mismo código anterior para comprobar que una variablede instancia no sea inicializada de cierta forma;; para ello hemos declarado una variable a nivel de clase incializandola tanto ensu declaración como en el constructtor de la clase.

Queremos comprobar que no se lleven a cabo inicializaciones de ese tipo a nivel de clase y para ello, con el soporte del SSLRToolkit podemos construir una sentencia como esta

Como en el caso anterior creamos una regla copiando la plantilla de reglas de tipo xpath con la siguiente información

La marcamos como activa

Y ahora aparecerá con el nivel de criticidad asociada

Y podemos acceder al detalle de la violación que nos proporciona la información asignada en la creación de la regla.

Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-­No comercial-­Sin obras derivadas 2.5

PUSH THIS Page Pushers Community Help?

----no clicks

+ + + + + + + +

0 people brought clicks to this page

powered by karmacracy

Share | 0

» Registrate y accede a esta y otras ventajas «

Anímate y coméntanos lo que pienses sobre este TUTORIAL:

6. Referencias.

http://en.wikipedia.org/wiki/Abstract_syntax_treehttp://docs.codehaus.org/display/SONAR/SSLRhttp://docs.codehaus.org/display/SONAR/Extending+Coding+Rules

7. Conclusiones.

¿Sientes como la fuerza te acompaña? ;;)

Un saludo.

Jose

[email protected]

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

More ShareShareShareShareShareShare

Copyright 2003-­2014 © All Rights Reserved | Texto legal y condiciones de uso | Banners | Powered by Autentia | Contacto