{"id":251,"date":"2019-11-19T23:41:18","date_gmt":"2019-11-20T02:41:18","guid":{"rendered":"http:\/\/desarrollo-agil.ml\/blog\/?p=251"},"modified":"2019-11-20T09:13:08","modified_gmt":"2019-11-20T12:13:08","slug":"respetar-el-analizador-estatico-de-codigo-si-o-no","status":"publish","type":"post","link":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/","title":{"rendered":"Respetar el analizador est\u00e1tico de c\u00f3digo. \u00bfSi o no?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u00bfPor qu\u00e9 usar un analizador est\u00e1tico de c\u00f3digo?<\/h2>\n\n\n<p>Los analizadores est\u00e1ticos de c\u00f3digo permiten medir de una forma m\u00e1s o menos objetiva el estado del c\u00f3digo del proyecto. Se apoyan en reglas y convenciones, y van \u00ableyendo\u00bb nuestro proyecto y nos hacen cr\u00edticas.<\/p>\n\n\n<h2 class=\"wp-block-heading\">\u00bfPor qu\u00e9 en algunos equipos es tab\u00fa?<\/h2>\n\n\n\n<p>Si sabemos usarlos, los analizadores est\u00e1ticos de c\u00f3digo pueden darnos gran valor en nuestro proceso de desarrollo. Por el contrario, si los usamos con vicios, podemos llegar a dispararnos un tiro en el pie y llegar a odiarlo.<\/p>\n\n\n\n<p>Los analizadores de c\u00f3digo, nos muestran las partes con \u00abmal olor\u00bb de nuestro c\u00f3digo, y nos dan un feedback de las cosas que deber\u00edamos mejorar. Si no estamos acostumbrados a recibir feedback como parte del proceso de mejora cont\u00ednua, tendemos a desestimarlo. Si le sumamos que probablemente no empezamos el proyecto usando el analizador desde cero, vamos a ver que hay muchas cosas por mejorar, y eso puede llegar a abrumarnos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfPor qu\u00e9 usar las reglas por defecto?<\/h2>\n\n\n\n<p> Muchas veces nos vemos tentados a personalizar\u00a0las reglas. Ponemos excusas como \u00abesto es una pavada\u00bb, o \u00abel proyecto es legacy, ya se que est\u00e1 todo mal\u00bb, o \u00abahora no tengo tiempo\u00bb, y empezamos con la tijera a recortar reglas. <\/p>\n\n\n\n<p>Cada regla fue creada con un objetivo espec\u00edfico. A veces solemos desactivarlas sin siquiera pensar cu\u00e1l es el objetivo espec\u00edfico que persigue la regla v\u00edctima. Como primer paso, tengo que asegurarme que conozco ese objetivo. Puede pasarnos que no compartamos el para qu\u00e9 de la regla, y en ese caso podemos borrarla impunemente. Pero si compartimos el objetivo de la regla, probemos dejarla. En todo caso, si para una parte espec\u00edfica del c\u00f3digo pensamos que no nos sirve, podemos hacer la excepci\u00f3n, solo en ese caso puntual.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfC\u00f3mo usar constructivamente el analizador de c\u00f3digo? <\/h2>\n\n\n\n<p>Por lo general, un error deber\u00eda ayudarme a replantearme cosas. Algunas preguntas adecuadas a plantearse pueden ser:  \u00bfQu\u00e9 objetivo persigue? \u00bfQu\u00e9 me est\u00e1 queriendo decir? \u00bfPor qu\u00e9 alguien me marcar\u00eda eso? \u00bfQue efecto voy a producir si lo dejo como est\u00e1? \u00bfQu\u00e9 alternativas tengo? \u00bfQu\u00e9 dice este error acerca de mi dise\u00f1o? \u00bfDeber\u00eda replantearlo? Cada vez que veamos un error, tratemos de dar respuesta a esos interrogantes. Nos va a ayudar a pensar. Si transitamos ese camino, vamos a empezar a prestarle m\u00e1s atenci\u00f3n a esos peque\u00f1os code smells, y re cuestionarnos el dise\u00f1o, antes de que sea m\u00e1s tarde.  <\/p>\n\n\n\n<p>En los proyectos legacy, o que no empezaron desde cero, sabemos que muy probablemente tengamos muchas advertencias. No las ignoremos, pero tampoco querramos cambiar todo de golpe. Nos vamos a pegar un golpe feo si tratamos de hacerlo. Marcar un l\u00edmite cuantitativo del que no podamos pasar, pero hag\u00e1moslo en serio, a conciencia. Luego, a medida que pase el tiempo, vayamos bajando ese l\u00edmite.  Apliquemos \u00abla regla del boy scout\u00bb:  ir dejando todo lo que toco un poco mejor que lo que estaba antes de que yo estuviera ah\u00ed. <\/p>\n\n\n\n<p>En un proyecto nuevo, usemos un analizador est\u00e1tico de c\u00f3digo desde cero. A lo primero puede resultarnos tedioso, pero vamos a pagar con creces la inversi\u00f3n. Es m\u00e1s,  una vez que nos acostumbremos a las reglas, ya vamos a incorporarlas desde el momento de escribir el c\u00f3digo, y no vamos a necesitar andar haciendo correcciones.  <\/p>\n\n\n\n<p>Siempre empezar a usar el set de reglas por defecto.  Solo luego de un tiempo extendido de usar el analizador podemos empezar a revisar (en equipo y a conciencia) cada una de las reglas que veamos que nos traen problemas.<\/p>\n\n\n\n<p>Como dice PMD, \u00abDon&#8217;t shoot the messenger\u00bb<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfPor qu\u00e9 usar un analizador est\u00e1tico de c\u00f3digo? Los analizadores est\u00e1ticos de c\u00f3digo permiten medir de una forma m\u00e1s o menos objetiva el estado del c\u00f3digo del proyecto. Se apoyan en reglas y convenciones, y van \u00ableyendo\u00bb nuestro proyecto y nos hacen cr\u00edticas. \u00bfPor qu\u00e9 en algunos equipos es tab\u00fa? Si sabemos usarlos, los analizadores\u2026 <span class=\"read-more\"><a href=\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/\">Leer m\u00e1s &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32,13,14],"tags":[41,39,40],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Respetar el analizador est\u00e1tico de c\u00f3digo. \u00bfSi o no? - Desarrollo \u00c1gil<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Respetar el analizador est\u00e1tico de c\u00f3digo. \u00bfSi o no? - Desarrollo \u00c1gil\" \/>\n<meta property=\"og:description\" content=\"\u00bfPor qu\u00e9 usar un analizador est\u00e1tico de c\u00f3digo? Los analizadores est\u00e1ticos de c\u00f3digo permiten medir de una forma m\u00e1s o menos objetiva el estado del c\u00f3digo del proyecto. Se apoyan en reglas y convenciones, y van \u00ableyendo\u00bb nuestro proyecto y nos hacen cr\u00edticas. \u00bfPor qu\u00e9 en algunos equipos es tab\u00fa? Si sabemos usarlos, los analizadores\u2026 Leer m\u00e1s &raquo;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/\" \/>\n<meta property=\"og:site_name\" content=\"Desarrollo \u00c1gil\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-20T02:41:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-20T12:13:08+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@emilianotebes\" \/>\n<meta name=\"twitter:site\" content=\"@emilianotebes\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Emiliano\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/52.201.184.187\/blog\/#website\",\"url\":\"http:\/\/52.201.184.187\/blog\/\",\"name\":\"Desarrollo \\u00c1gil\",\"description\":\"Sofware por y para humanos\",\"publisher\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/52.201.184.187\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#webpage\",\"url\":\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/\",\"name\":\"Respetar el analizador est\\u00e1tico de c\\u00f3digo. \\u00bfSi o no? - Desarrollo \\u00c1gil\",\"isPartOf\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#website\"},\"datePublished\":\"2019-11-20T02:41:18+00:00\",\"dateModified\":\"2019-11-20T12:13:08+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"http:\/\/desarrollo-agil.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Respetar el analizador est\\u00e1tico de c\\u00f3digo. \\u00bfSi o no?\"}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#webpage\"},\"author\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"headline\":\"Respetar el analizador est\\u00e1tico de c\\u00f3digo. \\u00bfSi o no?\",\"datePublished\":\"2019-11-20T02:41:18+00:00\",\"dateModified\":\"2019-11-20T12:13:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#webpage\"},\"wordCount\":641,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"keywords\":[\"Analizador est\\u00e1tico de c\\u00f3digo\",\"PMD\",\"Sonar\"],\"articleSection\":[\"Agile\",\"Buenas practicas\",\"experiencias\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\",\"name\":\"Emiliano\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/52.201.184.187\/blog\/#personlogo\",\"inLanguage\":\"es\",\"url\":\"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g\",\"caption\":\"Emiliano\"},\"logo\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#personlogo\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/emilianotebes\/\",\"https:\/\/twitter.com\/emilianotebes\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Respetar el analizador est\u00e1tico de c\u00f3digo. \u00bfSi o no? - Desarrollo \u00c1gil","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/","og_locale":"es_ES","og_type":"article","og_title":"Respetar el analizador est\u00e1tico de c\u00f3digo. \u00bfSi o no? - Desarrollo \u00c1gil","og_description":"\u00bfPor qu\u00e9 usar un analizador est\u00e1tico de c\u00f3digo? Los analizadores est\u00e1ticos de c\u00f3digo permiten medir de una forma m\u00e1s o menos objetiva el estado del c\u00f3digo del proyecto. Se apoyan en reglas y convenciones, y van \u00ableyendo\u00bb nuestro proyecto y nos hacen cr\u00edticas. \u00bfPor qu\u00e9 en algunos equipos es tab\u00fa? Si sabemos usarlos, los analizadores\u2026 Leer m\u00e1s &raquo;","og_url":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/","og_site_name":"Desarrollo \u00c1gil","article_published_time":"2019-11-20T02:41:18+00:00","article_modified_time":"2019-11-20T12:13:08+00:00","twitter_card":"summary_large_image","twitter_creator":"@emilianotebes","twitter_site":"@emilianotebes","twitter_misc":{"Escrito por":"Emiliano","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"http:\/\/52.201.184.187\/blog\/#website","url":"http:\/\/52.201.184.187\/blog\/","name":"Desarrollo \u00c1gil","description":"Sofware por y para humanos","publisher":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/52.201.184.187\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"WebPage","@id":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#webpage","url":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/","name":"Respetar el analizador est\u00e1tico de c\u00f3digo. \u00bfSi o no? - Desarrollo \u00c1gil","isPartOf":{"@id":"http:\/\/52.201.184.187\/blog\/#website"},"datePublished":"2019-11-20T02:41:18+00:00","dateModified":"2019-11-20T12:13:08+00:00","breadcrumb":{"@id":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"http:\/\/desarrollo-agil.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Respetar el analizador est\u00e1tico de c\u00f3digo. \u00bfSi o no?"}]},{"@type":"Article","@id":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#article","isPartOf":{"@id":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#webpage"},"author":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"headline":"Respetar el analizador est\u00e1tico de c\u00f3digo. \u00bfSi o no?","datePublished":"2019-11-20T02:41:18+00:00","dateModified":"2019-11-20T12:13:08+00:00","mainEntityOfPage":{"@id":"http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#webpage"},"wordCount":641,"commentCount":0,"publisher":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"keywords":["Analizador est\u00e1tico de c\u00f3digo","PMD","Sonar"],"articleSection":["Agile","Buenas practicas","experiencias"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/52.201.184.187\/blog\/experiencias\/respetar-el-analizador-estatico-de-codigo-si-o-no\/#respond"]}]},{"@type":["Person","Organization"],"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851","name":"Emiliano","image":{"@type":"ImageObject","@id":"http:\/\/52.201.184.187\/blog\/#personlogo","inLanguage":"es","url":"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g","contentUrl":"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g","caption":"Emiliano"},"logo":{"@id":"http:\/\/52.201.184.187\/blog\/#personlogo"},"sameAs":["https:\/\/www.linkedin.com\/in\/emilianotebes\/","https:\/\/twitter.com\/emilianotebes"]}]}},"_links":{"self":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/251"}],"collection":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/comments?post=251"}],"version-history":[{"count":8,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/251\/revisions"}],"predecessor-version":[{"id":273,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/251\/revisions\/273"}],"wp:attachment":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/media?parent=251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/categories?post=251"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/tags?post=251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}