<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diario de Programación &#187; sonar</title>
	<atom:link href="http://blog.chuidiang.com/tag/sonar/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chuidiang.com</link>
	<description>Programación e informática en general</description>
	<lastBuildDate>Wed, 25 Jan 2012 23:17:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sonar: viene &#8230; y se va.</title>
		<link>http://blog.chuidiang.com/2009/09/23/sonar-viene-y-se-va/</link>
		<comments>http://blog.chuidiang.com/2009/09/23/sonar-viene-y-se-va/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 20:57:03 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[sonar]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[integración continua]]></category>
		<category><![CDATA[métricas]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=657</guid>
		<description><![CDATA[&#160; Hace un tiempo instal&#233; y prob&#233; Sonar, una estupenda herramienta que genera un informe muy vistoso y c&#243;mo de usar sobre las m&#233;tricas de nuestro c&#243;digo, Pero al final tuve que abandonarlo. El compilado con maven generando el informe era muy lento y el servidor web de sonar acababa dando timeout por la carga [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Hace un tiempo instal&eacute; y prob&eacute; <a href="http://blog.chuidiang.com/2009/02/05/pegas-con-sonar/">Sonar</a>, una estupenda herramienta que genera un informe muy vistoso y c&oacute;mo de usar sobre las m&eacute;tricas de nuestro c&oacute;digo, Pero al final tuve que abandonarlo. El compilado con maven generando el informe era muy lento y el servidor web de sonar acababa dando timeout por la carga a la que se ve&iacute;a sometido. Al final el compilado con maven fallaba por este timeout y eso me hac&iacute;a totalmente imposible integrarlo con <a href="http://blog.chuidiang.com/2008/09/18/hudson/">hudson</a>, para obtener los informes actualizados todas las noches.</p>
<p>El otro d&iacute;a me dio por revisar c&oacute;mo iba el desarrollo de Sonar, qu&eacute; nuevas versiones hab&iacute;an sacado, qu&eacute; problemas hab&iacute;an resuelto &#8230; y me resulto interesante que hab&iacute;an corregido/a&ntilde;adido una nueva &quot;feature&quot;, la <a href="http://jira.codehaus.org/browse/SONAR-764">SONAR-764</a>, en la que b&aacute;sicamente dicen que cargan el trabajo en el plugin de sonar para maven en vez de en el servidor web de sonar. Esto tiene pinta de que puede solucionar los problemas de timeout con el servidor de sonar. As&iacute; que a ello, descargar, instalar y probar.</p>
<p>Las primeras pruebas manuales funcionan a la perfecci&oacute;n. Eso s&iacute;, los compilados tardan casi el doble ya que deben generar adem&aacute;s todos los reportes de m&eacute;tricas, pero ya no tengo el problema de timeout y el informe acaba correctamente y se publica en el servidor web de sonar.</p>
<p>Siguiente paso, hacer que Hudson genere con sonar ese informe todas las noches y lo publique. Y ah&iacute; empezaron los problemas. Algunos proyectos tardaban m&aacute;s en compilar, pero lo hac&iacute;an todo bien y el informe se publicaba. Pero otros proyectos, no necesariamente los m&aacute;s grandes, acababan dando una excepci&oacute;n en el compilado, indicando que &quot;Sonar no se puede ejecutar&quot; y un NullPointerException en los MOJOS de maven. Tras unas investigaciones r&aacute;pidas, no llegu&eacute; a ninguna conclusi&oacute;n ni ning&uacute;n arreglo. El mismo proyecto compilado manualmente en el sitio donde lo hace hudson funciona, pero si lo hace hudson no funciona.</p>
<p>As&iacute; que mi gozo en un pozo. Desinstalar sonar y esperar a una nueva ocasi&oacute;n.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/09/23/sonar-viene-y-se-va/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Pegas con sonar</title>
		<link>http://blog.chuidiang.com/2009/02/05/pegas-con-sonar/</link>
		<comments>http://blog.chuidiang.com/2009/02/05/pegas-con-sonar/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 18:18:52 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[métricas]]></category>
		<category><![CDATA[sonar]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=489</guid>
		<description><![CDATA[&#160; Como de todos es sabido, soy un &#34;pupas&#34; y las cosas nunca me funcionan bien a la primera ni a la segunda. Coment&#233; hace unos d&#237;as que hab&#237;a instalado y probado sonar. Las primeras pruebas fueron bastante bien, pero con el uso me he ido encontrando las pegas. Realmente, pegas no tiene muchas, en [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Como de todos es sabido, soy un &quot;pupas&quot; y las cosas nunca me funcionan bien a la primera ni a la segunda. Coment&eacute; hace unos d&iacute;as que <a href="http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/">hab&iacute;a instalado y probado sonar</a>. Las primeras pruebas fueron bastante bien, pero con el uso me he ido encontrando las pegas.</p>
<p>Realmente, pegas no tiene muchas, en realidad, s&oacute;lo le he visto una, pero molesta bastante.</p>
<p>El plugin de sonar para maven compila nuestro proyecto y pasa todas las m&eacute;tricas. Luego, se pone a insertar en la base de datos de sonar toda esa informaci&oacute;n. Durante ese tiempo, el servidor web de sonar se queda bastante pillado y responde muy lentamente. El problema es que en ese ordenador <a href="http://blog.chuidiang.com/2008/11/22/trac-redmine/">tenemos tambi&eacute;n instalado redmine</a>, <a href="http://blog.chuidiang.com/2008/10/21/jugando-con-archiva/">archiva</a> y <a href="http://blog.chuidiang.com/2008/09/18/hudson/">hudson</a>. Todas esas &quot;web&quot; dejan de responder o responden muy mal mientras se est&aacute;n insertando estad&iacute;sticas en la base de datos.</p>
<p>La siguiente pega, que es m&aacute;s de lo mismo, es que el plugin de sonar para maven tambi&eacute;n intenta acceder a la web de sonar. No s&eacute; el motivo exacto, pero me estoy temiendo que es para avisar al servidor de sonar de que hay nuevas estad&iacute;sticas en base de datos y empiece e echar unas cuentas, organizar los datos o algo. El caso es que cuando el plugin de maven termina, el servidor sonar puede tirarse diez u once minutos &quot;procesando estad&iacute;sticas&quot;, seg&uacute;n pone en la web. Durante ese tiempo, todo el ordenador va muy lento y dejan de responder el hudson, el redmine y el archiva.</p>
<p>Y otra pega m&aacute;s, que viene a ser lo mismo, es que cuando el plugin de maven intenta acceder a la web de sonar, tiene para mi gusto un timeout muy corto, dando error r&aacute;pidamente si no consigue conectarse. Basta con que pille a Hudson compilando para que aquello tenga ciertas probabilidades de error en la conexi&oacute;n. Y no te digo si le pilla procesando estad&iacute;sticas del mismo sonar de un proyecto anterior. Ah&iacute; es imposible conectarse y hay que esperar. Esta pega es realmente gorda, porque me impide meter el plugin de sonar en el hudson, de forma que adem&aacute;s del compilado nocturno, se calculen las m&eacute;tricas nocturnas. El compilado del primer proyecto funciona o no, seg&uacute;n le de, pero los dem&aacute;s nunca funcionan.</p>
<p>Total, que voy a tener que agenciarme otro pc/estaci&oacute;n de trabajo para instalar exclusivamente sonar. Y aun as&iacute;, quiz&aacute;s hudson no pueda publicar las estad&iacute;sticas si pilla a sonar &quot;procesando&quot; informaci&oacute;n.</p>
<p>Ah, el ordenador no es lo m&aacute;s mejor del mundo, pero tampoco es viejo. Supongo que tendr&eacute; que probar en un linux en vez de un windows, o quiz&aacute;s es una estaci&oacute;n de trabajo solaris.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/02/05/pegas-con-sonar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Más de Sonar</title>
		<link>http://blog.chuidiang.com/2009/01/28/mas-de-sonar/</link>
		<comments>http://blog.chuidiang.com/2009/01/28/mas-de-sonar/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 20:03:38 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[métricas]]></category>
		<category><![CDATA[sonar]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=471</guid>
		<description><![CDATA[Coment&#233; ayer que acababa de instalar Sonar para la medici&#243;n de m&#233;tricas en nuestros proyectos. Pues bien, hoy he estado intentando hacer una instalaci&#243;n en serio y me he encontrado con varias pegas. Lo he instalado en 3 ordenadores. En dos de ellos me ha dado un error curioso al arrancarlo. Busca en la instalaci&#243;n [...]]]></description>
			<content:encoded><![CDATA[<p>Coment&eacute; ayer que <a href="http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/">acababa de instalar Sonar</a> para la medici&oacute;n de m&eacute;tricas en nuestros proyectos. Pues bien, hoy he estado intentando hacer una instalaci&oacute;n en serio y me he encontrado con varias pegas.</p>
<p>Lo he instalado en 3 ordenadores. En dos de ellos me ha dado un error curioso al arrancarlo. Busca en la instalaci&oacute;n de java un fichero bin/server/jvm.dll. Pues s&oacute;lo en uno de los ordenadores lo hay. En los otros dos, lo que tengo es un bin/client/jvm.dll. As&iacute; que sin ganas de ponerme a investigar sobre la instalaci&oacute;n de java, la soluci&oacute;n r&aacute;pida: copie el directorio client con el nombre de server en el mismo sitio y el mismo contenido. Con eso parece que se le enga&ntilde;a para que arranque.</p>
<p>En la documentaci&oacute;n de Sonar comenta que viene con la base de datos derby db embebida, pero que es recomendable usar una base de datos m&aacute;s seria. Pues nada, <a href="http://www.chuidiang.com/chuwiki/index.php?title=Categor%C3%ADa:MySQL">vamos con mysql</a>, que lo tengo instalado. Entro en mysql, creo una base de datos para sonar, voy al fichero de configuraci&oacute;n de sonar, quito derby y pongo mysql (esa parte viene muy bien, porque la cadena de conexi&oacute;n de mysql viene comentada y s&oacute;lo hay que descomentarla y cometar la de derby, adem&aacute;s, el driver de mysql en java viene con Sonar, as&iacute; que ni siquiera hay que poner el jar con el conector en ning&uacute;n sitio). M&aacute;s adelante, en el mismo fichero, viene el nombre y usuario para acceso. Y aqu&iacute; viene otra pega m&aacute;s. Hay que configurar el dialecto de la base de datos, pero en la documentaci&oacute;n de Sonar no pone nada de eso. As&iacute; que arranco Sonar, abro el navegador, le doy al bot&oacute;n de crear las tablas, empieza a crear las tablas y acaba fallando. B&uacute;squeda del error en google y en el mismo fichero, m&aacute;s adelante hay que indicarle al <a href="http://www.chuidiang.com/chuwiki/index.php?title=Categor%C3%ADa:Hibernate">hibernate</a> de Sonar el dialecto de la base de datos. Dos propiedades m&aacute;s, una con el dialecto mysql y la otra con la clase que sabe de ese dialecto. Eso s&iacute;, hay que volver a fijarse porque la clase con el dialecto es propia de Sonar, y no la de hibernate (otro ensayo y error y van dos, en ambos casos con borrado previo de la base de datos, que se hab&iacute;a creado a medias).</p>
<p>Listo todo lo referente al servidor. Viene ahora ejecutar el plugin de maven en un proyecto <a href="http://www.chuidiang.com/chuwiki/index.php?title=Categor%C3%ADa:Maven">maven</a> para empezar a meter datos.</p>
<p>Mi primera prueba con la base de datos derby funcion&oacute; a la primera, as&iacute; que sin mirar m&aacute;s, le d&iacute; al comando. Error. No encuentra la base de datos. Me pongo a buscar por google y resulta que el plugin de maven inserta directamente en la base de datos, por lo que necesita todos los par&aacute;metros de conexi&oacute;n. La <a href="http://docs.codehaus.org/display/SONAR/Install+Sonar#InstallSonar-Step5ConfigureMaven2">configuraci&oacute;n necesaria para maven</a> viene en la documentaci&oacute;n de sonar, as&iacute; que culpa m&iacute;a por no haberla le&iacute;do.&nbsp; Pongo todo eso, arranco de nuevo&#8230;. y otro error. Esta vez porque no conoce el dialecto de la base de datos. La documentaci&oacute;n NO pone nada del tema. As&iacute; que me lo invento. En el trozo de xml de configuraci&oacute;n meto dos tags para el dialecto, exactamente con los mismos nombres que el fichero de configuraci&oacute;n del servidor y los mismos valores. Estupendo, ya va.</p>
<p>Me pongo con varios proyectos, poco a poco, y voy consiguiendo los resultados. Pero me salen dos pegas:</p>
<ul>
<li>En algunos proyectos se nos han colado acentos y e&ntilde;es en los nombres de variables y m&eacute;todos. Java lo admite. Sonar no. Salta una excepci&oacute;n y falla todo el proceso. Por m&aacute;s que jugu&eacute; con los encoding, no hubo manera. Al final quit&eacute; los acentos, pero digo yo que lo suyo es que metiera ese fallo en las m&eacute;tricas en vez de saltar la excepci&oacute;n.</li>
<li>En otros proyectos uso una extension <a href="http://maven.apache.org/wagon/wagon-providers/wagon-ftp/">wagon-ftp</a> para el deploy. Pues bien, los wagon son incompatibles con los Sonar. El Sonar entra en una llamada recursiva a s&iacute; mismo y <a href="http://jira.codehaus.org/browse/SONAR-222">da una excepci&oacute;n de StackOverflowError</a>. En fin, habr&aacute; que buscarle arreglo.</li>
</ul>
<p>Ma&ntilde;ana me toca otro rato de pelea, ya que el plugin de maven no se conforma s&oacute;lo con insertar directamente en base de datos, sino que accede al servidor Sonar a trav&eacute;s de http tambi&eacute;n para algo y me est&aacute; fallando esa conexi&oacute;n, supongo que por timeout, o por el proxy corporativo o vete t&uacute; a saber por qu&eacute;.</p>
<p>Hay que reconocer que la herramienta es muy vistosa y que permite ver el estado del proyecto de un vistazo. Pero la instalaci&oacute;n y la documentaci&oacute;n deja bastante que desear, sobre todo teniendo en cuenta que s&oacute;lo son cuatro cosas lo que deber&iacute;an haber puesto, ya que no es una instalaci&oacute;n compleja.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/01/28/mas-de-sonar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Métricas en Java: Sonar</title>
		<link>http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/</link>
		<comments>http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 18:51:12 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[métricas]]></category>
		<category><![CDATA[sonar]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=467</guid>
		<description><![CDATA[Esta ma&#241;ana he pasado casi toda la ma&#241;ana en una reuni&#243;n de esas de llorar. Se pretend&#237;a establecer un plan de acci&#243;n para solucionar un problema y al final se ha quedado en un &#34;pobrecitos de nosotros&#8230;&#34;, &#34;cu&#225;ntos problemas tenemos&#8230;&#34;, &#34;qu&#233; malo es el cliente&#8230;&#34;, &#34;qu&#233; pocos somos para hacer el trabajo&#8230;&#34;, &#34;qu&#233; poco tiempo [...]]]></description>
			<content:encoded><![CDATA[<p>Esta ma&ntilde;ana he pasado casi toda la ma&ntilde;ana en una reuni&oacute;n de esas de llorar. Se pretend&iacute;a establecer un plan de acci&oacute;n para solucionar un problema y al final se ha quedado en un &quot;pobrecitos de nosotros&#8230;&quot;, &quot;cu&aacute;ntos problemas tenemos&#8230;&quot;, &quot;qu&eacute; malo es el cliente&#8230;&quot;, &quot;qu&eacute; pocos somos para hacer el trabajo&#8230;&quot;, &quot;qu&eacute; poco tiempo tenemos &#8230;&quot;,&#8230;.</p>
<p>As&iacute; que al terminar la reuni&oacute;n, me fu&iacute; a comer y me pas&eacute; la tarde totalmente desmotivado para el trabajo. Me puse a &quot;internetear&quot; en busca de cosas interesantes y encontr&eacute; <a href="http://sonar.codehaus.org/">Sonar</a>.</p>
<p>Sonar es una herramienta para la medici&oacute;n de m&eacute;tricas del c&oacute;digo java (<a href="http://www.chuidiang.com/chuwiki/index.php?title=Maven_y_PMD">pmd</a>, javancss, findbugs, &#8230; todo junto), pero aporta un par de cosas que me han parecido interesantes.</p>
<p>En primer lugar, al arrancar Sonar, se arranca un servidor web. Las m&eacute;tricas de nuestros proyectos estar&aacute;n accesibles en el navegador v&iacute;a web. Bien, de momento nada del otro mundo.</p>
<p>La parte interesante es que las m&eacute;tricas se generan con un plugin de <a href="http://www.chuidiang.com/java/herramientas/maven.php">maven</a> y ese plugin busca al servidor web para a&ntilde;adirle el proyecto (si es la primera vez que lo compilamos con el plugin) o para actualizarle las m&eacute;tricas. Esto no deja de ser una peque&ntilde;a maravilla, puesto que se puede ejecutar el plugin en nuestros compilados nocturnos, de forma que siempre tendremos en el servidor web de Sonar las m&eacute;tricas actualizadas al d&iacute;a. Es m&aacute;s, Sonar guarda las estad&iacute;sticas de c&oacute;mo evolucionan las m&eacute;tricas, as&iacute; que con el tiempo tendremos un gr&aacute;fico que indica si cada vez hay m&aacute;s o menos violaciones de m&eacute;tricas en el proyecto.</p>
<p>La segunda cosa que me ha resultado interesante es la forma de presentar los resultados. Aparte de las obligadas tablas con valores, se presentan con bloques de colores por proyectos, paquetes y clases. Me explico, hay una vista en la que salen los proyectos como bloques de colores, cada bloque del tama&ntilde;o proporcional al tama&ntilde;o del proyecto. El color es rojo si el proyecto tiene muchas violaciones de m&eacute;tricas y va tirando a verde seg&uacute;n est&eacute; mejor. Pinchando el cuadro de un proyecto, se cambia la vista a los paquetes en ese proyecto, nuevamente con rect&aacute;ngulos de distintos tama&ntilde;os y colores. Pinchando en uno de esos paquetes, aparecen las clases con el mismo tipo de presentaci&oacute;n visual.</p>
<p>Esta forma de presentaci&oacute;n es realmente interesante si se pretenden arreglar las m&eacute;tricas de un proyecto que est&eacute; mal. Con ella se puede navegar r&aacute;pidamente e identificar los proyectos, paquetes y clases m&aacute;s conflictivos, centr&aacute;ndose primero en ellos.</p>
<p>Y ya puestos, tambi&eacute;n tiene una nube de tags en el que cada tag es una de las clases del proyecto. Los tags m&aacute;s gordos son las clases m&aacute;s horribles &quot;m&eacute;tricamente&quot; hablando. As&iacute; que incluso es mucho m&aacute;s sencillo identificar de un s&oacute;lo vistazo cual es la primera clase que deber&iacute;amos arreglar de todos los proyectos que tenemos. Por supuesto, te presenta el c&oacute;digo fuente de la clase indicando en qu&eacute; puntos hay violaciones de m&eacute;tricas y cuales.</p>
<p>En este enlace tienes explicadas las <a href="http://docs.codehaus.org/display/SONAR/Sonar+in+a+nutshell">distintas pantallas de Sonar</a> y puedes ver los cuadraditos y nubes de tags que menciono. </p>
<p>Actualmente metemos el plugin pmd en maven de forma que si fallan las m&eacute;tricas, falla el compilado. Es la forma de garantizar que la gente codifica siguiendo las m&eacute;tricas desde el principio. Sin embargo, tenemos mucho c&oacute;digo con m&eacute;tricas horribles, ya que nunca nos hab&iacute;amos preocupado en serio de ello. Sonar me va a permitir identificar los peores trozos de c&oacute;digo e ir arregl&aacute;ndolos poco a poco. </p>
<p>En fin, Sonar es una herramienta que intentar&eacute; ver c&oacute;mo integro en los proyectos con Hudson (creo que <a href="http://hudson.gotdns.com/wiki/display/HUDSON/Sonar+plugin">hay plugin de Sonar para Hudson</a>), que me dar&aacute; entreteniento unos d&iacute;as y si quieren que trabaje en algo serio, que no me metan en reuniones desmoralizantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

