{"id":909,"date":"2013-12-29T09:00:00","date_gmt":"2013-12-29T08:00:00","guid":{"rendered":"http:\/\/qualilogy.com\/es\/?p=909"},"modified":"2013-12-31T09:23:57","modified_gmt":"2013-12-31T08:23:57","slug":"analisis-plsql-con-sonarqube-el-quality-profile-plsql","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/analisis-plsql-con-sonarqube-el-quality-profile-plsql\/","title":{"rendered":"An\u00e1lisis PL\/SQL con SonarQube \u2013 El Quality Profile PL\/SQL"},"content":{"rendered":"<p><a href=\"http:\/\/500px.com\/Vicken\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1467\" alt=\"SonarQubePLSQL3\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubePLSQL3.jpg\" width=\"375\" height=\"178\" \/><\/a>En el post anterior, <a href=\"http:\/\/qualilogy.com\/es\/analisis-plsql-sonarqube-configuracion\/\" target=\"_blank\">hemos configurado nuestro primer an\u00e1lisis PL\/SQL con SonarQube y Jenkins<\/a>. Lo ejecutamos, y luego podemos ver los resultados en el dashboard de SonarQube.<\/p>\n<p>Ser\u00e1 una oportunidad para examinar y explicar en los pr\u00f3ximos articulos las reglas de SonarQube sobre las mejores pr\u00e1cticas de programaci\u00f3n PL\/SQL. Pero en primer lugar, vamos a ver lo que nos ofrece el Quality Profile PL\/SQL de SonarQube. <!--more--><\/p>\n<p>Recordemos que un Quality Profile es un grupo de reglas, cada una con un peso (Blocker, Cr\u00edtical, Major, etc.). Podemos personalizar el perfil, activando o desactivando ciertas reglas, o asignando un nivel diferente de criticidad seg\u00fan las buenas pr\u00e1cticas en marcha en el equipo de proyecto o en el cliente. Unas reglas, por lo general las m\u00e1s importantes, son obligatorias y no se deben desactivar, aunque podemos cambiar eventualmente su peso. Otras normas, en general, menos cr\u00edticas, se pueden desactivar si un cliente ha optado por no incluirlas en sus propias mejores pr\u00e1cticas.<\/p>\n<p>Para tomar estas decisiones, echemos un vistazo a lo que nos ofrece el perfil de calidad PL\/SQL de SonarQube.<\/p>\n<h2>El Quality Profile PL\/SQL de SonarQube<\/h2>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQL_IssuesDrillDown.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1471\" alt=\"PLSQL_IssuesDrillDown\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQL_IssuesDrillDown.jpg\" width=\"210\" height=\"138\" \/><\/a>En el cuadro de mando SonarQube de nuestro proyecto, la p\u00e1gina \u2018Issues drilldown&#8217; enumera varios violaci\u00f3nes de buenas pr\u00e1cticas de programaci\u00f3n PL\/SQL.<\/p>\n<p>Podemos constatar 17 infracciones de tipo Blockers pero zero defecto cr\u00ectico (Critical). Bastante sorprendente.<\/p>\n<p>Es muy posible tener s\u00f3lo 17 Blockers, como posible consecuencia de falta de atenci\u00f3n por parte del equipo del proyecto, pero una puntuaci\u00f3n perfecta en las normas cr\u00edticas con una total ausencia de defecto es realmente incre\u00edble.<\/p>\n<p>Vamos a ver el Quality Profile por defecto de SonarQube. Activamos el men\u00fa correspondiente en\u00a0 la barra de men\u00fa, para abrir la p\u00e1gina del mismo nombre.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubeQualityProfileMenu.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1472\" alt=\"SonarQubeQualityProfileMenu\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubeQualityProfileMenu.jpg\" width=\"445\" height=\"100\" \/><\/a><\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileSonarWay.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1473\" alt=\"PLSQLProfileSonarWay\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileSonarWay.jpg\" width=\"337\" height=\"104\" \/><\/a>Al final de esta p\u00e1gina, encontramos el Profile PL\/SQL llamado \u2018Sonar way\u2019, con 74 reglas.<\/p>\n<p>Un clic en este enlace nos permite entrar en la p\u00e1gina de detalle de estas normas.<\/p>\n<p>En ella, encontramos en primer lugar el conjunto de reglas cr\u00edticas al seleccionar \u2018Critical\u2019 en la combo-box \u2018Severity\u2019, y luego activando el bot\u00f3n \u2018Search\u2019.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCriticalRules.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1477\" alt=\"PLSQLProfileCriticalRules\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCriticalRules.jpg\" width=\"754\" height=\"205\" \/><\/a><\/p>\n<p>Podemos ver que este Profile tiene s\u00f3lo 5 reglas \u2018Critical\u2019 y todas ellas desactivadas, ya que no hay ninguna seleccionada.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfile5CriticalRules.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1478\" alt=\"PLSQLProfile5CriticalRules\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfile5CriticalRules.jpg\" width=\"497\" height=\"212\" \/><\/a><\/p>\n<p>Ahora, si buscamos todas las reglas de cualquier criticidad, pero inactivas:<a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileInactiveRules.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1476\" alt=\"PLSQLProfileInactiveRules\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileInactiveRules.jpg\" width=\"567\" height=\"132\" \/><\/a><\/p>\n<p>Podemos ver que 58 reglas son desactivadas, adem\u00e1s de los 74 existentes.<\/p>\n<p>Por supuesto que no todas son necesariamente aplicables, pero mi objetivo en esta serie de posts es construir una demo que me permite mostrar lo que se puede hacer con SonarQube para una evaluaci\u00f3n de la calidad de c\u00f3digo PL\/SQL. Por eso, yo quiero tener el mayor n\u00famero de reglas, y luego escoger si hay que desactivar algunas o cambiar su criticidad para mi demo.<\/p>\n<h2>Crear un nuevo Quality Profile<\/h2>\n<p>Voy a crear un nuevo perfil de calidad en el que voy a activar todas las reglas existentes. Luego, podremos volver a ejecutar un an\u00e1lisis y ver en el cuadro de mando SonarQube si tengo unos resultados interesantes.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopy.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1480\" alt=\"PLSQLProfileCopy\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopy.jpg\" width=\"222\" height=\"64\" \/><\/a>Para crear un nuevo Profile, tengo primero que conectarme como \u2018Admin\u2019, de tal modo que, cuando entro de nuevo en la p\u00e1gina \u2018Quality Profile\u2019, nuevos men\u00fas han aparecido que me permiten copier el perfil por defecto, con un click en el men\u00fa \u2018Copy\u2019.<\/p>\n<p>Surge un dialog-box para escoger un nombre para este nuevo Profile.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopyName.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1482\" alt=\"PLSQLProfileCopyName\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopyName.jpg\" width=\"543\" height=\"130\" \/><\/a><\/p>\n<p>Una vez creado, vamos en su p\u00e1gina de Profile y buscamos todas las reglas inactivas, como lo hemos hecho anteriormente.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileActivateAll.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1483\" alt=\"PLSQLProfileActivateAll\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileActivateAll.jpg\" width=\"223\" height=\"85\" \/><\/a>Una vez estas 58 reglas en la pantalla, puedo activarlas todas de una vez con el \u2018Bulk Change\u2019 en la parte superior derecha de la p\u00e1gina. Simplemente seleccionamos \u2018Activate all\u2019 para activar todas las reglas presente en la p\u00e1gina.<\/p>\n<p>Tras esta operaci\u00f3n, SonarQube me dice que 132 reglas est\u00e1n disponibles en mi nuevo perfil : las 74 activas al principio m\u00e1s las 58 que acabamos de activar. La cuenta es correcta.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/TabProjects.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1484\" alt=\"TabProjects\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/TabProjects.jpg\" width=\"254\" height=\"43\" \/><\/a>Se queda una \u00faltima operaci\u00f3n que realizer: asignar este perfil a mi an\u00e1lisis PL\/SQL. Vamos en la pesta\u00f1a &#8216;Projects&#8217; y buscamos el proyecto que representa mi an\u00e1lisis de c\u00f3digo PL\/SQL. Con 2 letras introducidas en el campo de busqueda, SonarQube lista todos los proyectos con estas 2 letras y me permite escoger el an\u00e1lisis de c\u00f3digo PL\/SQL.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileProjects.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1485\" alt=\"PLSQLProfileProjects\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileProjects.jpg\" width=\"490\" height=\"165\" \/><\/a><\/p>\n<p>Luego, voy a hacer un &#8216;Logout&#8217; como Admin y ejecutar de nuevo mi an\u00e1lisis PL\/SQL en Jenkins.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQL_IssuesDrillDown2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1488\" alt=\"PLSQL_IssuesDrillDown2\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQL_IssuesDrillDown2.jpg\" width=\"215\" height=\"124\" \/><\/a>La pagina &#8216;Issues drilldown&#8217; muestra ahora nuevos defectos &#8216;Critical&#8217; y un aumento muy importante en el n\u00famero de violaciones.<\/p>\n<p>Entonces, vamos a poder ver todas las reglas PL\/SQL disponibles en SonarQube, y por lo tanto personalizar nuestro nuevo Quality Profile.<\/p>\n<p>El siguiente post se centrar\u00e1 en las reglas m\u00e1s importantes: &#8216;Blockers&#8217; y &#8216;Critical&#8217;. Hasta luego.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el post anterior, hemos configurado nuestro primer an\u00e1lisis PL\/SQL con SonarQube y Jenkins. Lo ejecutamos, y luego podemos ver los resultados en el dashboard de SonarQube. Ser\u00e1 una oportunidad para examinar y explicar en los pr\u00f3ximos articulos las reglas de SonarQube sobre las mejores pr\u00e1cticas de programaci\u00f3n PL\/SQL. Pero en primer lugar, vamos a [&hellip;]<\/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-909","post","type-post","status-publish","format-standard","hentry","category-sonarqube-plsql"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/909"}],"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=909"}],"version-history":[{"count":33,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/909\/revisions"}],"predecessor-version":[{"id":914,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/909\/revisions\/914"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=909"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=909"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}