{"id":621,"date":"2010-01-21T02:30:32","date_gmt":"2010-01-20T18:30:32","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=621"},"modified":"2012-01-12T00:23:24","modified_gmt":"2012-01-12T08:23:24","slug":"auditando-seu-codigo-delphi","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/","title":{"rendered":"Auditando seu c\u00f3digo Delphi"},"content":{"rendered":"<p>Quando falamos em qualidade, sempre nos preocupamos em apresentar ao cliente um software de alto desempenho. Muitos nos dizem que n\u00e3o importa como o software est\u00e1 escrito, mas sim que funcione e atenda \u00e0s suas necessidades. Na verdade, quem pensa assim est\u00e1 cometendo um grande erro, que pode trazer impacto l\u00e1 na frente. Se voc\u00ea n\u00e3o escreve um c\u00f3digo estruturado e depois precisa crescer a aplica\u00e7\u00e3o, pode acontecer de voc\u00ea n\u00e3o conseguir, pois muitos remendos foram feitos e sua aplica\u00e7\u00e3o n\u00e3o cresceu de forma estruturada. O Delphi ir\u00e1 contribuir, atrav\u00e9s de auditoria e m\u00e9tricas, para encontrar erros na sua aplica\u00e7\u00e3o enquanto estiver em produ\u00e7\u00e3o e ajudar\u00e3o a disciplinar os desenvolvedores a escrever c\u00f3digos padronizados.<\/p>\n<p>Quantas vezes voc\u00ea j\u00e1 definiu um guia de melhores pr\u00e1ticas de codifica\u00e7\u00e3o que evitasse que sua equipe de programadores cometesse aquelas gafes de codifica\u00e7\u00e3o que podem tornar o c\u00f3digo t\u00e3o ineficiente quanto incompreens\u00edvel?<\/p>\n<p>Suponhamos que sua equipe tenha um guia de melhores pr\u00e1ticas, a segunda pergunta fatalmente seria: Como podemos garantir que o guia est\u00e1 sendo seguido?<\/p>\n<p>A resposta novamente seria: revis\u00e3o de c\u00f3digo (code review) e, se encaixarmos tal pr\u00e1tica no contexto de um projeto com milhares de linhas de c\u00f3digo, sabemos que o resultado pode ser catastr\u00f3fico no que diz respeito a tempo.<\/p>\n<p>Atrav\u00e9s do recurso de auditoria de c\u00f3digo (QA Audits) do Delphi voc\u00ea poder\u00e1 finalmente definir um conjunto de boas pr\u00e1ticas de codifica\u00e7\u00e3o e garantir que estas pr\u00e1ticas est\u00e3o sendo seguidas em seus projetos. Traduzindo para o dia-a-dia, voc\u00ea ir\u00e1 detectar erros que podem ocorrer na aplica\u00e7\u00e3o antes de ela ser executada.<\/p>\n<p>A auditoria verifica se o c\u00f3digo est\u00e1 em conformidade com as regras e par\u00e2metros estabelecidos pela organiza\u00e7\u00e3o. Os resultados apresentam apenas as viola\u00e7\u00f5es detectadas e de forma categorizada, s\u00e3o elas:<\/p>\n<ul>\n<li>Arrays e Refer\u00eancias<\/li>\n<li>C\u00f3digo duplicado<\/li>\n<li>Conte\u00fado sup\u00e9rfluo<\/li>\n<li>Desempenho<\/li>\n<li>Desvios e la\u00e7os<\/li>\n<li>Estilo de codifica\u00e7\u00e3o<\/li>\n<li>Estilo de nomenclatura<\/li>\n<li>Express\u00f5es<\/li>\n<li>Falhas de projeto (design)<\/li>\n<li>Poss\u00edveis erros<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/qaaudits.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-622\" title=\"Auditoria\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/qaaudits.jpeg\" alt=\"\" width=\"673\" height=\"353\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/qaaudits.jpeg 752w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/qaaudits-320x168.jpeg 320w\" sizes=\"(max-width: 673px) 100vw, 673px\" \/><\/a><\/p>\n<p>Cada item da auditoria tem uma nota explicativa representando o modo correto e o incorreto para utiliza\u00e7\u00e3o da mesma, tornando mais f\u00e1cil o entendimento por parte do desenvolvedor naquele item da auditoria. Cada um desses itens pode ter seu n\u00edvel de severidade alterado entre: Info, Warning e Error. Ficando a crit\u00e9rio do desenvolvedor definir a import\u00e2ncia do item.<\/p>\n<h3><strong>Loop Body is Never Executed (LBNE)<\/strong><\/h3>\n<p>Em muitos casos, temos rotinas de execu\u00e7\u00e3o que envolve v\u00e1rios loops e \u00e9 necess\u00e1rio depurar para ter certeza que os loops ser\u00e3o executados. Com a auditoria LBNE, isso pode ser detectado. O c\u00f3digo abaixo \u00e9 um exemplo simples que podemos detectar. Exemplos complexos, com diversas condi\u00e7\u00f5es, tamb\u00e9m s\u00e3o detectados facilmente.<\/p>\n<pre class=\"brush: pascal\">var\r\n   x: Boolean;\r\nbegin\r\n  x := false;\r\n  while s do\r\n  begin\r\n     ....\r\n  end;<\/pre>\n<p><strong>INDEX OUT OF BOUNDS (IOB)<\/strong><\/p>\n<p>Esta mensagem \u00e9 comum quando se tenta acessar uma posi\u00e7\u00e3o de array inexistente. Veja abaixo um exemplo de um c\u00f3digo que ir\u00e1 gerar este aviso.<\/p>\n<pre class=\"brush: pascal\">var\r\n  nloops,\r\n  i,\r\n  j :integer;\r\n  matriz : array of integer;\r\n  somatorio : double;\r\nbegin\r\n  for i := 0 to nloops do\r\n  begin\r\n      somatorio := 0;\r\n      for j := 0 to High(matriz) do\r\n          somatorio := somatorio + matriz[i];\r\n\r\n  end;<\/pre>\n<p><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/Auditresults.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-624\" title=\"Resultado da Audit\u00f3ria\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/Auditresults.jpeg\" alt=\"\" width=\"647\" height=\"234\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/Auditresults.jpeg 841w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/Auditresults-320x115.jpeg 320w\" sizes=\"(max-width: 647px) 100vw, 647px\" \/><\/a><\/p>\n<p>A auditoria apontou o erro e informa que na linha 25 existe a tentativa de acesso a uma vari\u00e1vel que n\u00e3o faz do 2\u00ba loop, vamos explicar melhor.<br \/>\nNo for da vari\u00e1vel J, estou tentando acesso a uma posi\u00e7\u00e3o do array ARR, apontando para a posi\u00e7\u00e3o I do loop anterior, sendo que no for da vari\u00e1vel J \u00e9 onde est\u00e1 sendo percorrido o array ARR.<\/p>\n<p>S\u00e3o mais de 200 audit\u00f3rias dispon\u00edveis no Delphi, que tal executar o processo de audit\u00f3ria no seu c\u00f3digo, n\u00e3o se assuste com o resultado :), a id\u00e9ia \u00e9 lhe ajudar a melhorar a qualidade do seu produto final.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando falamos em qualidade, sempre nos preocupamos em apresentar ao cliente um software de alto desempenho. Muitos nos dizem que n\u00e3o importa como o software est\u00e1 escrito, mas sim que funcione e atenda \u00e0s suas necessidades. Na verdade, quem pensa assim est\u00e1 cometendo um grande erro, que pode trazer impacto l\u00e1 na frente. Se voc\u00ea [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1316,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"yes","footnotes":""},"categories":[102],"tags":[181,41],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Auditando seu c\u00f3digo Delphi | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\"Quando falamos em qualidade, sempre nos preocupamos em apresentar ao cliente um software de alto desempenho. Muitos nos dizem que n\u00e3o importa como o\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Auditando seu c\u00f3digo Delphi | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\"Quando falamos em qualidade, sempre nos preocupamos em apresentar ao cliente um software de alto desempenho. Muitos nos dizem que n\u00e3o importa como o\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2010-01-20T18:30:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-01-12T08:23:24+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/07\/Icon_Delphi.png\" \/>\n\t<meta property=\"og:image:width\" content=\"175\" \/>\n\t<meta property=\"og:image:height\" content=\"175\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"3 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/07\/Icon_Delphi.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/07\/Icon_Delphi.png\",\"width\":175,\"height\":175},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/\",\"name\":\"Auditando seu c\\u00f3digo Delphi | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#primaryimage\"},\"datePublished\":\"2010-01-20T18:30:32+00:00\",\"dateModified\":\"2012-01-12T08:23:24+00:00\",\"description\":\"Quando falamos em qualidade, sempre nos preocupamos em apresentar ao cliente um software de alto desempenho. Muitos nos dizem que n\\u00e3o importa como o\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Auditando seu c\\u00f3digo Delphi\",\"datePublished\":\"2010-01-20T18:30:32+00:00\",\"dateModified\":\"2012-01-12T08:23:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#webpage\"},\"commentCount\":2,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#primaryimage\"},\"keywords\":[\"Delphi\",\"UML\"],\"articleSection\":[\"Delphi\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/auditando-seu-codigo-delphi\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/621"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=621"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/621\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/1316"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=621"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}