{"id":877,"date":"2013-12-22T09:43:20","date_gmt":"2013-12-22T08:43:20","guid":{"rendered":"http:\/\/qualilogy.com\/es\/?p=877"},"modified":"2013-12-22T17:07:28","modified_gmt":"2013-12-22T16:07:28","slug":"analisis-plsql-sonarqube-organizacion","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/analisis-plsql-sonarqube-organizacion\/","title":{"rendered":"An\u00e1lisis PL\/SQL con SonarQube &#8211; Organizaci\u00f3n"},"content":{"rendered":"<p><a href=\"http:\/\/500px.com\/Vicken\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1416\" alt=\"SonarQubePLSQL1\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/12\/SonarQubePLSQL1.jpg\" width=\"380\" height=\"181\" \/><\/a>Ahora que he actualizado mi entorno de an\u00e1lisis de c\u00f3digo completo con los<a href=\"http:\/\/qualilogy.com\/es\/sonarqube-upgrade-4-0\/\" target=\"_blank\"> upgrades de SonarQube<\/a>, de <a href=\"http:\/\/qualilogy.com\/es\/upgrade-sonarqub-runner-jenkins\/\" target=\"_blank\">SonarQube-Runner y de Jenkins<\/a> <span id=\"result_box\" lang=\"es\"><span class=\"hps\">con las<\/span> <span class=\"hps\">\u00faltimas versiones<\/span><span>, es hora<\/span> <span class=\"hps\">de actualizar<\/span>\u00a0<span class=\"hps\">tambi\u00e9n<\/span>\u00a0mi repositorio de <span class=\"hps\">aplicaciones y<\/span> <span class=\"hps\">demos.<\/span><\/span><!--more--><\/p>\n<p>Para mi trabajo de consultor de Calidad, tengo todos tipos de \u00abproyectos\u00bb, es decir, an\u00e1lisis de c\u00f3digo fuente, para varios tipos de procesos de calidad (Integraci\u00f3n Continua, Quality Gate, Evaluaci\u00f3n de Calidad, etc.) y para todos tipos de tecnolog\u00edas. Recordemos que SonarQube no es solamente una herramienta de c\u00f3digo abierto que analiza Java o otros lenguajes de nuevas tecnolog\u00edas, sino que tambi\u00e9n es muy \u00fatil para aplicaciones Legacy Cobol, SAP-ABAP, cliente-servidor, etc.<\/p>\n<p>As\u00ed que voy a aprovechar la relativa baja de actividad de fin de a\u00f1o para organizar un poco mis demos &#8230; comenzando con PL\/SQL. Con el tiempo, he recogido todo tipo de scripts para crear base de datos, o paquetes de programas de tratamientos de base de datos, y vamos a tener la oportunidad de:<\/p>\n<ul>\n<li><span id=\"result_box\" lang=\"es\"><span class=\"hps\">Ver c\u00f3mo\u00a0<\/span><span class=\"hps\">organizo<\/span> <span class=\"hps\">mi entorno<\/span> <span class=\"hps\">de an\u00e1lisis de c\u00f3digo para realizar evaluaciones de calidad de aplicaciones,<\/span><\/span><\/li>\n<li><span id=\"result_box\" lang=\"es\">Configurar<span class=\"hps\"> y<\/span> <span class=\"hps\">realizar un <\/span><span class=\"hps\">an\u00e1lisis<\/span> PL\/SQL con <span class=\"hps\">SonarQube<\/span><span>.<\/span><\/span><\/li>\n<li><span id=\"result_box\" lang=\"es\">P<span class=\"hps\">ersonalizar<\/span> <span class=\"hps\">el perfil de<\/span> reglas <span class=\"hps\">PL<\/span><span class=\"hps\">\/SQL<\/span> <span class=\"hps\">proporcionado por<\/span> <span class=\"hps\">SonarQube<\/span><span>.<\/span><\/span><\/li>\n<li><span id=\"result_box\" lang=\"es\"><span class=\"hps\">Examinar<\/span>\u00a0<span class=\"hps\">las<\/span> <span class=\"hps\">diferentes reglas y<\/span> <span class=\"hps\">benas practicas<\/span> <span class=\"hps\">que ofrece<\/span>\u00a0<span class=\"hps\">SonarQube<\/span> <span class=\"hps\">para el lenguaje de programaci\u00f3n de base de datos de Oracle.<\/span><\/span><\/li>\n<\/ul>\n<p><span id=\"result_box\" lang=\"es\"><span class=\"hps\">No s\u00e9<\/span> <span class=\"hps\">cu\u00e1ntos articulos<\/span> <span class=\"hps\">se necesitar\u00e1n para<\/span> <span class=\"hps\">cubrir este<\/span> <span class=\"hps atn\">tema &#8216;<\/span><span>SonarQube<\/span> <span class=\"hps\">y PL\/<\/span><span class=\"hps\">SQL&#8217;<\/span><span>, <\/span><span class=\"hps\">me gusta<\/span> <span class=\"hps\">dejar un poco de<\/span> <span class=\"hps\">margen<\/span> para <span class=\"hps\">improvisar si encuentro unas cosas que me parecen interesantes mientras avanzamos.<\/span> <span class=\"hps\">Adem\u00e1s<\/span><span>, probablemente<\/span> <span class=\"hps\">voy<\/span> <span class=\"hps\">a detener esta<\/span> <span class=\"hps\">serie<\/span> temporalmente <span class=\"hps\">por el<\/span> <span class=\"hps atn\">A\u00f1o Nuevo (<\/span><span>y celebraciones<\/span><span>)<\/span><span>.<\/span> <span class=\"hps\">Entonces, es<\/span> <span class=\"hps\">probable que esto<\/span> <span class=\"hps\">nos llevar\u00e1<\/span> <span class=\"hps\">hasta enero.<\/span><\/span><\/p>\n<h2>Organizaci\u00f3n del entorno de an\u00e1lisis<\/h2>\n<p>En primer lugar, recordemosnos c\u00f3mo he organizado mi entorno de an\u00e1lisis de c\u00f3digo. Obviamente, no es absolutamente necesario hacer lo mismo, pero a\u00fan as\u00ed, recomiendo adoptar unas normas. Sobre todo si trabajas en equipo.<\/p>\n<p>No quieres que te llaman durante las vacaciones, porque nadie est\u00e1 capaz de seguir con tu auditor\u00eda de c\u00f3digo, que se ha retrasado por culpa del cliente para no entregar el c\u00f3digo de su aplicaci\u00f3n a tiempo. Y el que debe continuar con esta tarea no sabe c\u00f3mo has organizado tu trabajo.<\/p>\n<p>Incluso si trabajas solo, como freelance por ejemplo, es deseable seguir siempre el mismo proceso, Corres el riesgo de no recordar d\u00f3nde demonios has guardado el archivo de configuraci\u00f3n de tal an\u00e1lisis realizado hace 2 a\u00f1os, y que est\u00e1s buscando ahora.<\/p>\n<p>Entonces, as\u00ed es como yo trabajo:<\/p>\n<ul>\n<li>Un directorio dedicado a todos mis an\u00e1lisis: \u2018C:\\SRC\u2019.<\/li>\n<li>Differentes carpetas por cada tecnologia (J2EE, ABAP, Cobol, Repositorio de otras tecnos, \u2026) y especialmente, una carpeta dedicada a mis demos: \u2018C:\\SRC\\Demo\u2019.<\/li>\n<li>En esta carpeta, un directorio para cada demo de cada tecnologia: \u2018C:\\SRC\\Demo\\J2EE\u2019, \u2018C:\\SRC\\Demo\\Cobol\u2019, \u2026, y \u2018C:\\SRC\\Demo\\PLSQL\u2019 para mi demo.<\/li>\n<\/ul>\n<p>En cada una de estas carpetas, tengo tres directorios:<\/p>\n<ul>\n<li>\u2018Delivery\u2019 para guardar las diferentes versiones de aplicaciones entregadas.<\/li>\n<li>\u2018Conf\u2019 para gestionar todos los archivos de configuraci\u00f3n, documentaci\u00f3n, evaluaciones, hojas de calculo, presentaciones, etc.<\/li>\n<li>\u2018Source\u2019 para copiar el c\u00f3digo que analizar.<\/li>\n<\/ul>\n<p><span id=\"result_box\" lang=\"es\"><span class=\"hps\">\u00bfPor qu\u00e9 no<\/span> <span class=\"hps\">tener un<\/span> <span class=\"hps\">solo directorio<\/span> <span class=\"hps\">para analizar una<\/span> <span class=\"hps\">versi\u00f3n?<\/span> <span class=\"hps\">En primer lugar<\/span> <span class=\"hps\">porque tengo que<\/span> <span class=\"hps\">analizar<\/span> <span class=\"hps\">las sucesivas versiones<\/span><span>.<\/span> <span class=\"hps\">Por ejemplo<\/span><span>,<\/span> <span class=\"hps\">un cliente quiere<\/span> <span class=\"hps\">una auditor\u00eda<\/span> <span class=\"hps\">porque no es<\/span> <span class=\"hps\">muy contento con su<\/span> <span class=\"hps\">proveedor<\/span> <span class=\"hps\">y desea<\/span> <span class=\"hps\">comprobar la calidad del<\/span> <span class=\"hps\">c\u00f3digo<\/span> <span class=\"hps\">entregado.<\/span> <span class=\"hps\">Primero<\/span> <span class=\"hps\">vamos a analizar la<\/span> <span class=\"hps\">versi\u00f3n inicial<\/span> <span class=\"hps\">recibida por este outsourcer cuando se encarg\u00f3 del <\/span><span class=\"hps\">mantenimiento<\/span><span>, y luego la versi\u00f3n final<\/span><span class=\"hps\"> que<\/span> <span class=\"hps\">ha realizado para <\/span><span class=\"hps\">el cliente<\/span><span>.<\/span> <span class=\"hps\">Mediante el an\u00e1lisis de<\/span> <span class=\"hps\">estas dos versiones<\/span><span>, podemos determinar<\/span> <span class=\"hps\">las diferencias<\/span> <span class=\"hps\">en t\u00e9rminos de<\/span> <span class=\"hps\">defectos<\/span><span>, de complejidad<\/span> <span class=\"hps\">y de capacidad de mantenimiento<\/span><span class=\"hps\">.<\/span> <\/span><\/p>\n<p><span id=\"result_box\" lang=\"es\"><span class=\"hps\">M\u00e1s importante a\u00fan<\/span><span>, a veces se necesita<\/span><span class=\"hps\"> cambiar el<\/span> <span class=\"hps\">c\u00f3digo, <\/span> <span class=\"hps\">por varias razones:<\/span><\/span><\/p>\n<ul>\n<li>Un archivo tiene un problema que detiene el an\u00e1lisis. Por ejemplo, un programa viejo, que ya no se usa, pero no compila bien y causa un error de parsing.<\/li>\n<li>Tengo que organizar el c\u00f3digo de manera diferente. Es incre\u00edble el n\u00famero de arquitectos que han reinventado las mejores pr\u00e1cticas de organizaci\u00f3n de paquetes y directorios.<\/li>\n<li>La entrega contiene una multitud de directorios .svn que llenan el espacio del disco duro, y retrasan el an\u00e1lisis.<\/li>\n<\/ul>\n<p>Si tienes un servidor, te recomiendo utilizar un disco duro para los softwares y el disco m\u00e1s grande y m\u00e1s rapido para almacenar el c\u00f3digo fuente y hacer los an\u00e1lisis.<\/p>\n<p>Por supuesto, si trabajas en un equipo de proyecto, es probable que tengas una herramienta de gesti\u00f3n de la configuraci\u00f3n (SCM) y, por tanto, un entorno diferente. El mio ser\u00e1 &#8216;C:\\SRC\\Demo\\PLSQL\\Source&#8217;.<\/p>\n<p>Veremos en el pr\u00f3ximo post como configurar y realizar un an\u00e1lisis c\u00f3digo PL\/SQL. Hasta luego.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ahora que he actualizado mi entorno de an\u00e1lisis de c\u00f3digo completo con los upgrades de SonarQube, de SonarQube-Runner y de Jenkins con las \u00faltimas versiones, es hora de actualizar\u00a0tambi\u00e9n\u00a0mi repositorio de aplicaciones y demos.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-877","post","type-post","status-publish","format-standard","hentry","category-sonarqube-plsql"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/877"}],"collection":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/comments?post=877"}],"version-history":[{"count":19,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/877\/revisions"}],"predecessor-version":[{"id":898,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/877\/revisions\/898"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=877"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}