{"id":231953,"date":"2023-01-03T18:43:00","date_gmt":"2023-01-03T15:43:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231953"},"modified":"2023-01-03T18:43:47","modified_gmt":"2023-01-03T15:43:47","slug":"configurando-php-codesniffer-por-projeto","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/configurando-php-codesniffer-por-projeto\/","title":{"rendered":"Configurando PHP CodeSniffer por projeto"},"content":{"rendered":"\n<p>Alguns anos atr\u00e1s, escrevi um post sobre como <a href=\"https:\/\/tommcfarlin.com\/php-codesniffer-in-visual-studio-code\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">configurar o PHP CodeSniffer no Visual Studio Code<\/a> (e tamb\u00e9m o atualizei recentemente).<\/p>\n<p>Mas j\u00e1 se passaram quatro anos desde que esse post foi escrito originalmente e, nesse per\u00edodo, muita coisa pode mudar em termos de como escrevemos c\u00f3digo.<\/p>\n<p>Quatro anos \u00e9 mais ou menos a Era da Internet, n\u00e3o \u00e9?<\/p>\n<p>De qualquer forma, os pontos b\u00e1sicos desse artigo ainda est\u00e3o de p\u00e9, mas se voc\u00ea estiver trabalhando em uma variedade de projetos e alguns deles exigirem configura\u00e7\u00f5es, configura\u00e7\u00f5es e padr\u00f5es diferentes, ent\u00e3o a maneira como voc\u00ea instala e configura o PHP CodeSniffer pode ser diferente do como voc\u00ea o configura em um n\u00edvel de sistema.<\/p>\n<p>Portanto, se voc\u00ea estiver nessa posi\u00e7\u00e3o, veja como configurar o PHP CodeSniffer por projeto usando o Visual Studio Code.<\/p>\n<h2>PHP CodeSniffer por projeto<\/h2>\n<p>Este artigo faz algumas suposi\u00e7\u00f5es:<\/p>\n<ul>\n<li>Voc\u00ea conhece o <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> ,<\/li>\n<li>Voc\u00ea sabe como lidar com <a href=\"https:\/\/code.visualstudio.com\/docs\/getstarted\/settings\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">espa\u00e7os<\/a> de trabalho no c\u00f3digo,<\/li>\n<li>Voc\u00ea est\u00e1 familiarizado com <a href=\"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP CodeSniffer<\/a> (pelo menos em n\u00edvel global),<\/li>\n<li>E voc\u00ea sabe como trabalhar com <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ikappas.phpcs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">extens\u00f5es<\/a> de c\u00f3digo .<\/li>\n<\/ul>\n<p>Se voc\u00ea n\u00e3o tiver certeza sobre qualquer um deles, revise <a href=\"https:\/\/tommcfarlin.com\/php-codesniffer-in-visual-studio-code\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">este artigo<\/a> e depois volte. Vou orient\u00e1-lo atrav\u00e9s do resto.<\/p>\n<h3>1 Instale o PHP CodeSniffer localmente<\/h3>\n<p>Como projetos diferentes podem exigir um conjunto diferente de padr\u00f5es, acho \u00fatil manter uma c\u00f3pia <code>composer.json<\/code>e, naturalmente, <code>composer.lock<\/code>por projeto.<\/p>\n<p>Isso significa que na raiz do meu projeto, tenho um <code>composer.json<\/code>arquivo com tudo que preciso para um determinado projeto. No caso deste artigo, preciso de uma c\u00f3pia do PHP CodeSniffer.<\/p>\n<p>Para instalar o PHP CodeSniffer e a vers\u00e3o mais recente do WordPress Coding Standards no n\u00edvel do projeto, criarei o arquivo acima na raiz do meu projeto e incluirei o seguinte:<\/p>\n<pre><code>{\n    \"require\": {\n        \"wp-coding-standards\/wpcs\": \"2.3.0\",\n        \"squizlabs\/php_codesniffer\": \"3.*\"\n    }\n}\n<\/code><\/pre>\n<p>Na maioria dos casos, esse arquivo ser\u00e1 muito mais complexo, mas voc\u00ea ter\u00e1 uma ideia geral do que precisa incluir.<\/p>\n<p>Em seguida, execute <code>composer install<\/code>e isso criar\u00e1 um <code>vendor<\/code>diret\u00f3rio em seu projeto que incluir\u00e1 os padr\u00f5es de codifica\u00e7\u00e3o do WordPress e o PHP CodeSniffer.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158884-61e6e841e56c6.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158884-61e6e841e56c6.png\" alt=\"Configurando PHP CodeSniffer por projeto\"><\/a><\/p>\n<h3>2 Configure links simb\u00f3licos para os bin\u00e1rios locais<\/h3>\n<p>Neste ponto, voc\u00ea pode achar \u00fatil criar um link simb\u00f3lico para os bin\u00e1rios para PHPCS e PHPCBF para n\u00e3o entrar em conflito com o que estiver executando em n\u00edvel global.<\/p>\n<p>Para fazer isso, na raiz do projeto, voc\u00ea pode inserir o seguinte no seu terminal:<\/p>\n<pre><code>$ ln -s \/vendor\/bin\/phpcs phpcs\n$ ln -s \/vendor\/bin\/phpcbf phpcbf<\/code><\/pre>\n<p>Isso permitir\u00e1 que voc\u00ea execute os bin\u00e1rios do seu terminal. Para testar, tente o seguinte comando:<\/p>\n<pre><code>$ .\/phpcs --version<\/code><\/pre>\n<p>E voc\u00ea deve ver uma sa\u00edda como esta:<\/p>\n<pre><code>PHP_CodeSniffer version 3.5.5 (stable) by Squiz (http:\/\/www.squiz.net)<\/code><\/pre>\n<p>Se sim, voc\u00ea tem tudo configurado corretamente.<\/p>\n<h3>3 Instale a extens\u00e3o PHP CodeSniffer<\/h3>\n<p>O pr\u00f3ximo passo, sem d\u00favida o mais f\u00e1cil, \u00e9 configurar a extens\u00e3o PHP CodeSniffer no Code. Existem v\u00e1rias op\u00e7\u00f5es que voc\u00ea tem, mas tive uma boa experi\u00eancia com <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ikappas.phpcs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">essa extens\u00e3o espec\u00edfica<\/a>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158884-61e6e847469e5.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158884-61e6e847469e5.png\" alt=\"Configurando PHP CodeSniffer por projeto\"><\/a><\/p>\n<p>Depois de instalado e voc\u00ea recarregar seu IDE, voc\u00ea deve estar pronto para instalar e configurar o PHP CodeSniffer por projeto.<\/p>\n<h3>4 Configure seu espa\u00e7o de trabalho<\/h3>\n<p>No Code, a pr\u00f3xima coisa que voc\u00ea vai querer fazer \u00e9 configurar o PHP Code Sniffer para seu projeto espec\u00edfico. Para fazer isso, \u00e9 mais f\u00e1cil configurar um espa\u00e7o de trabalho para seu projeto.<\/p>\n<p>Voc\u00ea pode fazer isso clicando no menu <strong>Arquivo<\/strong> e, em seguida, clicando no item de menu <strong>Salvar espa\u00e7o de trabalho como\u2026 .<\/strong> Isso criar\u00e1 um <code>project.code-workspace<\/code>arquivo onde voc\u00ea optar por inclu\u00ed-lo.<\/p>\n<p>Se voc\u00ea estiver controlando a vers\u00e3o do seu projeto, recomendo mant\u00ea-lo na raiz do seu projeto para que voc\u00ea possa mant\u00ea-lo no controle de vers\u00e3o. Em seguida, se voc\u00ea abrir esse arquivo, notar\u00e1 que \u00e9 JSON e inclui uma <code>settings<\/code>diretiva. Dentro dessa diretiva, adicione as seguintes configura\u00e7\u00f5es:<\/p>\n<pre><code>project.code-workspace<\/code><\/pre>\n<p>Observe acima que estamos dizendo explicitamente \u00e0 extens\u00e3o onde est\u00e1 o caminho execut\u00e1vel \u2013 ou seja, no <code>vendor<\/code>diret\u00f3rio relativo ao <code>workspace<\/code>arquivo.<\/p>\n<p>Depois de fazer isso, voc\u00ea deve ser capaz de come\u00e7ar a escrever c\u00f3digo e fazer com que ele fareje ativamente seu c\u00f3digo enquanto trabalha.<\/p>\n<h2>Quer mais?<\/h2>\n<p>Se voc\u00ea estiver interessado em sniffing e corre\u00e7\u00e3o ainda mais agressivos de cheiros e problemas de c\u00f3digo, recomendo verificar <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/compositor-para-wordpress-parte-2\/\" title=\"o artigo no GrumPHP\">o artigo no GrumPHP<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Veja como voc\u00ea pode come\u00e7ar a configurar o PHP CodeSniffer por projeto usando o Composer, o Visual Studio Code e v\u00e1rios padr\u00f5es de codifica\u00e7\u00e3o.<\/p>\n","protected":false},"author":1,"featured_media":236922,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722,837,806,846,796,867],"tags":[1170],"class_list":["post-231953","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-guia-para-iniciantes","category-php-8","category-tutoriais","category-visual-studio-code-8","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/231953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=231953"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/231953\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/236922"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=231953"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=231953"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=231953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}