{"id":231304,"date":"2023-01-03T18:05:00","date_gmt":"2023-01-03T15:05:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231304"},"modified":"2023-01-03T18:08:47","modified_gmt":"2023-01-03T15:08:47","slug":"konfigurowanie-php-codesniffer-na-projekt","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/konfigurowanie-php-codesniffer-na-projekt\/","title":{"rendered":"Konfigurowanie PHP CodeSniffer na projekt"},"content":{"rendered":"\n<p>Kilka lat temu napisa\u0142em post o <a href=\"https:\/\/tommcfarlin.com\/php-codesniffer-in-visual-studio-code\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">konfigurowaniu kodu PHP CodeSniffer w Visual Studio Code<\/a> (i ostatnio te\u017c go zaktualizowa\u0142em).<\/p>\n<p>Ale min\u0119\u0142y cztery lata od napisania tego posta i od tego czasu wiele mo\u017ce si\u0119 zmieni\u0107, je\u015bli chodzi o to, jak piszemy kod.<\/p>\n<p>Cztery lata to w przybli\u017ceniu epoka Internetu, prawda?<\/p>\n<p>W ka\u017cdym razie podstawowe punkty tego artyku\u0142u s\u0105 nadal aktualne, ale je\u015bli pracujesz nad r\u00f3\u017cnymi projektami, a niekt\u00f3re z nich wymagaj\u0105 r\u00f3\u017cnych konfiguracji, ustawie\u0144 i standard\u00f3w, to spos\u00f3b, w jaki instalujesz i konfigurujesz PHP CodeSniffer mo\u017ce by\u0107 inny ni\u017c jak go skonfigurowa\u0107 na poziomie systemu.<\/p>\n<p>Wi\u0119c je\u015bli jeste\u015b w tej sytuacji, oto jak mo\u017cesz skonfigurowa\u0107 PHP CodeSniffer na podstawie projektu za pomoc\u0105 Visual Studio Code.<\/p>\n<h2>PHP CodeSniffer na projekt<\/h2>\n<p>Ten artyku\u0142 zawiera kilka za\u0142o\u017ce\u0144:<\/p>\n<ul>\n<li>Znasz <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> ,<\/li>\n<li>Wiesz, jak obs\u0142ugiwa\u0107 <a href=\"https:\/\/code.visualstudio.com\/docs\/getstarted\/settings\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">obszary robocze<\/a> w kodzie,<\/li>\n<li>Znasz <a href=\"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP CodeSniffer<\/a> (przynajmniej na poziomie globalnym),<\/li>\n<li>I wiesz, jak pracowa\u0107 z <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ikappas.phpcs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rozszerzeniami<\/a> kodu .<\/li>\n<\/ul>\n<p>Je\u015bli nie masz pewno\u015bci, przejrzyj <a href=\"https:\/\/tommcfarlin.com\/php-codesniffer-in-visual-studio-code\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ten artyku\u0142<\/a>, a nast\u0119pnie wr\u00f3\u0107. Przeprowadz\u0119 ci\u0119 przez reszt\u0119.<\/p>\n<h3>1 Zainstaluj lokalnie PHP CodeSniffer<\/h3>\n<p>Poniewa\u017c r\u00f3\u017cne projekty mog\u0105 wymaga\u0107 r\u00f3\u017cnych zestaw\u00f3w standard\u00f3w, uwa\u017cam za przydatne przechowywanie kopii <code>composer.json<\/code>i, oczywi\u015bcie, <code>composer.lock<\/code>dla ka\u017cdego projektu.<\/p>\n<p>Oznacza to, \u017ce w katalogu g\u0142\u00f3wnym mojego projektu mam <code>composer.json<\/code>plik ze wszystkim, czego potrzebuj\u0119 do danego projektu. W przypadku tego artyku\u0142u potrzebuj\u0119 kopii PHP CodeSniffer.<\/p>\n<p>Aby zainstalowa\u0107 PHP CodeSniffer i najnowsz\u0105 wersj\u0119 WordPress Coding Standards na poziomie projektu, utworz\u0119 powy\u017cszy plik w katalogu g\u0142\u00f3wnym mojego projektu, a nast\u0119pnie do\u0142\u0105cz\u0119 nast\u0119puj\u0105ce elementy:<\/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>W wi\u0119kszo\u015bci przypadk\u00f3w ten plik b\u0119dzie znacznie bardziej z\u0142o\u017cony, ale masz og\u00f3lne poj\u0119cie o tym, co musisz uwzgl\u0119dni\u0107.<\/p>\n<p>Nast\u0119pnie uruchom, <code>composer install<\/code>a to utworzy <code>vendor<\/code>katalog w twoim projekcie, kt\u00f3ry b\u0119dzie zawiera\u0142 zar\u00f3wno standardy kodowania WordPress, jak i 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=\"Konfigurowanie PHP CodeSniffer na projekt\"><\/a><\/p>\n<h3>2 Skonfiguruj dowi\u0105zania symboliczne do lokalnych plik\u00f3w binarnych<\/h3>\n<p>W tym momencie przydatne mo\u017ce okaza\u0107 si\u0119 utworzenie symbolicznego dowi\u0105zania do plik\u00f3w binarnych dla PHPCS i PHPCBF, aby nie kolidowa\u0107 z tym, co uruchamiasz na poziomie globalnym.<\/p>\n<p>Aby to zrobi\u0107, w katalogu g\u0142\u00f3wnym projektu mo\u017cesz wpisa\u0107 w terminalu:<\/p>\n<pre><code>$ ln -s \/vendor\/bin\/phpcs phpcs\n$ ln -s \/vendor\/bin\/phpcbf phpcbf<\/code><\/pre>\n<p>To pozwoli ci uruchomi\u0107 binaria z twojego terminala. Aby przetestowa\u0107, wypr\u00f3buj nast\u0119puj\u0105ce polecenie:<\/p>\n<pre><code>$ .\/phpcs --version<\/code><\/pre>\n<p>Powiniene\u015b zobaczy\u0107 dane wyj\u015bciowe w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<pre><code>PHP_CodeSniffer version 3.5.5 (stable) by Squiz (http:\/\/www.squiz.net)<\/code><\/pre>\n<p>Je\u015bli tak, wszystko jest poprawnie skonfigurowane.<\/p>\n<h3>3 Zainstaluj rozszerzenie PHP CodeSniffer<\/h3>\n<p>Nast\u0119pnym krokiem, prawdopodobnie naj\u0142atwiejszym, jest skonfigurowanie rozszerzenia PHP CodeSniffer w kodzie. Masz wiele opcji, ale mam dobre do\u015bwiadczenia z <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ikappas.phpcs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tym konkretnym rozszerzeniem<\/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=\"Konfigurowanie PHP CodeSniffer na projekt\"><\/a><\/p>\n<p>Po zainstalowaniu i ponownym za\u0142adowaniu IDE, powiniene\u015b by\u0107 gotowy do zainstalowania i skonfigurowania PHP CodeSniffer na podstawie projektu.<\/p>\n<h3>4 Skonfiguruj swoj\u0105 przestrze\u0144 robocz\u0105<\/h3>\n<p>W kodzie nast\u0119pn\u0105 rzecz\u0105, kt\u00f3r\u0105 b\u0119dziesz chcia\u0142 zrobi\u0107, to skonfigurowa\u0107 PHP Code Sniffer dla twojego konkretnego projektu. Aby to zrobi\u0107, naj\u0142atwiej jest skonfigurowa\u0107 obszar roboczy dla swojego projektu.<\/p>\n<p>Mo\u017cesz to zrobi\u0107, klikaj\u0105c menu <strong>Plik<\/strong>, a nast\u0119pnie polecenie menu <strong>Zapisz obszar roboczy jako\u2026<\/strong>. Spowoduje to utworzenie <code>project.code-workspace<\/code>pliku, gdziekolwiek zdecydujesz si\u0119 go do\u0142\u0105czy\u0107.<\/p>\n<p>Je\u015bli kontrolujesz wersj\u0119 swojego projektu, zalecam trzymanie go w katalogu g\u0142\u00f3wnym projektu, aby m\u00f3c zachowa\u0107 kontrol\u0119 wersji. Nast\u0119pnie, je\u015bli otworzysz ten plik, zauwa\u017cysz, \u017ce jest to JSON i zawiera <code>settings<\/code>dyrektyw\u0119. W ramach tej dyrektywy dodaj nast\u0119puj\u0105ce ustawienia:<\/p>\n<pre><code>project.code-workspace<\/code><\/pre>\n<p>Zauwa\u017c, \u017ce powy\u017cej wyra\u017anie m\u00f3wimy rozszerzeniu, gdzie znajduje si\u0119 \u015bcie\u017cka do pliku wykonywalnego \u2013 to znaczy w <code>vendor<\/code>katalogu wzgl\u0119dem <code>workspace<\/code>pliku.<\/p>\n<p>Gdy to zrobisz, powiniene\u015b by\u0107 w stanie zacz\u0105\u0107 pisa\u0107 kod i aktywnie w\u0105cha\u0107 kod podczas pracy.<\/p>\n<h2>Chcie\u0107 wi\u0119cej?<\/h2>\n<p>Je\u015bli interesuje Ci\u0119 jeszcze bardziej agresywne sniffowanie i naprawianie zapach\u00f3w kodu i problem\u00f3w, polecam zapoznanie si\u0119 <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/kompozytor-dla-wordpressa-czesc-2\/\" title=\"z artyku\u0142em na GrumPHP\">z artyku\u0142em na GrumPHP<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oto jak mo\u017cesz rozpocz\u0105\u0107 konfigurowanie PHP CodeSniffer dla projektu przy u\u017cyciu Composer, Visual Studio Code i r\u00f3\u017cnych standard\u00f3w kodowania.<\/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":[721,897,805,836,845,795,866],"tags":[1169],"class_list":["post-231304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","category-przewodnik-dla-poczatkujacych","category-samouczki","category-visual-studio-code-7","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=231304"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231304\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/236922"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=231304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=231304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=231304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}