{"id":230950,"date":"2022-12-05T18:00:00","date_gmt":"2022-12-05T15:00:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230950"},"modified":"2022-11-10T00:44:19","modified_gmt":"2022-11-09T21:44:19","slug":"quando-clovercoverage-fallisce-e-passa-contemporaneamente","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/quando-clovercoverage-fallisce-e-passa-contemporaneamente\/","title":{"rendered":"Quando CloverCoverage fallisce e passa contemporaneamente"},"content":{"rendered":"\n<p>Ho parlato dei vantaggi dell&#8217;utilizzo di <strong><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/strong> nei <strong><a href=\"https:\/\/tommcfarlin.com\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">post precedenti<\/a><\/strong>. Uno degli strumenti che abbiamo utilizzato nei progetti dell&#8217;ultimo anno o pi\u00f9 \u00e8 <strong><a href=\"https:\/\/confluence.atlassian.com\/clover\/about-code-coverage-71599496.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Clover<\/a><\/strong>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c1715af.jpg\" 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-162830-61e745c1715af.jpg\" alt=\"Quando CloverCoverage fallisce e passa contemporaneamente\" ><\/a><\/p>\n<p>Foto di Quentin REY su Unsplash<\/p>\n<p>A un certo punto da quando abbiamo iniziato a usarlo e questa settimana, non veniva sempre eseguito ogni volta sulla mia macchina locale ma non sulla macchina su cui stavamo distribuendo il nostro codice.<\/p>\n<p>E no, non era perch\u00e9 c&#8217;erano direttive o commenti errati negli unit test e non perch\u00e9 <strong><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPUnit<\/a><\/strong> era configurato in modo errato (stava eseguendo tutti i test e riportandoli come previsto).<\/p>\n<p>Allora cosa d\u00e0?<\/p>\n<h2>Quando CloverCoverage fallisce<\/h2>\n<p>La versione TL;DR di questo:<\/p>\n<p>\u00c8 necessario che <strong><a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a><\/strong> sia installato correttamente perch\u00e9 CloverCoverage richiede un driver, ovvero Xdebug, per essere eseguito correttamente. Il problema \u00e8 che se stai usando <strong><a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Homebrew<\/a><\/strong>, non puoi installarlo come potremmo contemporaneamente.<\/p>\n<p>Il resto di questo post ti guider\u00e0 attraverso l&#8217;installazione di Xdebug, la sua configurazione corretta all&#8217;interno della tua configurazione PHP, la configurazione corretta della tua PHPUnit e quindi la verifica che tutto venga verificato in modo che la prossima volta che esegui GrumPHP, dovresti ottenere tutti i segni di spunta verdi .<\/p>\n<p>E, come bonus aggiuntivo, la prossima volta che esegui PHPUnit, dovresti ottenere un rapporto dall&#8217;aspetto gradevole per accompagnarlo. Ecco cosa devi fare.<\/p>\n<p>Innanzitutto, nota che questo si basa sull&#8217;idea che sei:<\/p>\n<ul>\n<li>usando Homebrew,<\/li>\n<li>avere PHPUnit installato,<\/li>\n<li>avere PHP 7.1 installato (sto usando PHP 7.1.19 al momento della stesura di questo post),<\/li>\n<li>non avere Clover in esecuzione correttamente.<\/li>\n<\/ul>\n<p>Per verificare alcune cose, esegui il seguente comando <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-00-phpunit-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nel terminale<\/a><\/strong> :<\/p>\n<p>Assicurati di eseguire almeno PHPUnit 7.1.4.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c3ef638.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-162830-61e745c3ef638.png\" alt=\"Quando CloverCoverage fallisce e passa contemporaneamente\" ><\/a><\/p>\n<p>Quindi, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-01-php-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">controlla la tua versione di PHP<\/a><\/strong> :<\/p>\n<p>E assicurati di eseguire almeno PHP 7.1.19 (il tuo output non assomiglia esattamente al mio, specialmente per quanto riguarda Xdebug, ma questo \u00e8 il punto di questo punto).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c6881a9.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-162830-61e745c6881a9.png\" alt=\"Quando CloverCoverage fallisce e passa contemporaneamente\" ><\/a><\/p>\n<p>A questo punto, siamo pronti per installare Xdebug e iniziare ad apportare le modifiche alla configurazione necessarie.<\/p>\n<h3>1 Installa Xdebug<\/h3>\n<p>Il motivo per cui dobbiamo installare Xdebug in modo diverso rispetto a prima \u00e8 che non \u00e8 pi\u00f9 supportato da Homebrew. Nessun problema per\u00f2, poich\u00e9 \u00e8 altrettanto facile da installare tramite <strong><a href=\"https:\/\/pecl.php.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pecl<\/a><\/strong>.<\/p>\n<p>Per installarlo, inserisci <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-02-install-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">il seguente comando<\/a><\/strong> nel tuo terminale:<\/p>\n<p>Dovresti quindi vedere un messaggio che \u00e8 stato installato e che l&#8217;estensione \u00e8 stata aggiunta al tuo file di configurazione PHP. Nella mia esperienza, Pecl non ottiene l&#8217;ultimo passaggio corretto.<\/p>\n<h3>2 Individuare il binario Xdebug su disco<\/h3>\n<p>Per affrontare questo, dobbiamo:<\/p>\n<ol>\n<li>individuare il percorso completo dell&#8217;estensione Xdebug,<\/li>\n<li>inserisci il percorso completo dell&#8217;estensione nel nostro file di configurazione PHP<\/li>\n<\/ol>\n<p>Per trovare i percorsi in cui pu\u00f2 risiedere Xdebug, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-04-find-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">utilizzare il comando seguente<\/a><\/strong> :<\/p>\n<p>\u00c8 possibile che vengano restituiti diversi percorsi (idealmente, tuttavia, dovresti ottenerne solo uno). Se ne ottieni pi\u00f9 di uno, cerca quello installato nel percorso che contiene la directory Pecl. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-05-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Probabilmente assomiglier\u00e0 a questo<\/a><\/strong> :<\/p>\n<pre><code>\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so<\/code><\/pre>\n<p>Una volta ottenuto un elenco di tutti i posti <strong>in cui Xdebug.so<\/strong> \u00e8 installato, copia il percorso del file in modo che possiamo configurare PHP per fare riferimento ad esso e usarlo correttamente.<\/p>\n<h3>3 Aggiorna la configurazione di PHP<\/h3>\n<p>Successivamente, dobbiamo aggiornare la configurazione di PHP. Farlo \u00e8 facile in quanto dobbiamo semplicemente aggiungere una singola riga al file PHP.ini. Ovviamente, se hai pi\u00f9 versioni di PHP in esecuzione, assicurarsi di aggiungerlo al file di configurazione corretto dipender\u00e0 dalla versione di PHP in esecuzione.<\/p>\n<p>Se hai pi\u00f9 versioni di PHP in esecuzione sul tuo computer, avrai pi\u00f9 versioni del file di configurazione PHP. Se hai installato una singola versione, avrai un unico\u00a0 file <strong>php.ini<\/strong>.<\/p>\n<p>Questo si trova in genere in <strong>\/usr\/local\/etc\/php\/7.1\/<\/strong> come <strong>php.ini\u00a0<\/strong> se stai usando PHP 7.1 ma la tua posizione potrebbe essere leggermente diversa. Ma il passaggio successivo rimane lo stesso.<\/p>\n<p>Dopo averlo fatto, assicurati di aggiungere la seguente riga al\u00a0 file <strong>php.ini\u00a0<\/strong>. Questo pu\u00f2 essere in qualsiasi punto del file, in realt\u00e0, ma ricorda che devi includere il percorso completo di Xdebug.so. Quindi il file dovrebbe <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-06-php-ini\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">includere questa riga<\/a><\/strong> :<\/p>\n<pre><code>zend_extension=\"\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so\"<\/code><\/pre>\n<p>Da l\u00ec, tutto dovrebbe funzionare. Puoi verificarlo <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-07-verify-xdebug-installation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">eseguendo<\/a><\/strong> :<\/p>\n<p>E quindi dovresti vedere il seguente messaggio:<\/p>\n<blockquote>\n<p>PHP 7.1.19 (cli) (realizzato: Jun 25 2018 10:42:21) (NTS )<br \/>\nCopyright (c) 1997-2018 The PHP Group<br \/>\nZend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies<br \/>\ncon Xdebug v2 .6.0, Copyright (c) 2002-2018, di Derick Rethans<br \/>\ncon Zend OPcache v7.1.19, Copyright (c) 1999-2018, di Zend Technologies<\/p>\n<\/blockquote>\n<p>Nota la quarta riga che include una nota su Xdebug. Se vedi questo, allora sei a posto.<\/p>\n<h3>4 Configurazione dell&#8217;unit\u00e0 PHP<\/h3>\n<p>A questo punto, l&#8217;ultima cosa che devi fare \u00e8 assicurarti che il tuo file phpunit.xml sia configurato correttamente. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-08-phpunit-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ecco un semplice esempio<\/a><\/strong> di come appare il mio (questo include anche il supporto per Clover):<\/p>\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n\n&lt;!-- http:\/\/phpunit.de\/manual\/4.1\/en\/appendixes.configuration.html --&gt;\n&lt;phpunit xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n         xsi:noNamespaceSchemaLocation=\"http:\/\/schema.phpunit.de\/4.1\/phpunit.xsd\"\n         bootstrap=\".\/tests\/bootstrap.php\"\n         backupGlobals=\"false\"\n         colors=\"true\"\n         convertErrorsToExceptions=\"true\"\n         convertNoticesToExceptions=\"true\"\n         convertWarningsToExceptions=\"true\"\n&gt;\n  &lt;testsuites&gt;\n    &lt;testsuite name=\"Plugin\"&gt;\n      &lt;directory&gt;.\/tests&lt;\/directory&gt;\n      &lt;exclude&gt;.\/tests\/phpunit&lt;\/exclude&gt;\n      &lt;exclude&gt;.\/src\/WordPress\/*.php&lt;\/exclude&gt;\n    &lt;\/testsuite&gt;\n  &lt;\/testsuites&gt;\n\n  &lt;logging&gt;\n    &lt;log type=\"coverage-clover\" target=\".\/coverage-report\/coverage.xml\"&gt;&lt;\/log&gt;\n    &lt;log type=\"coverage-html\" target=\"coverage-report\" lowUpperBound=\"30\" highLowerBound=\"80\"&gt;&lt;\/log&gt;\n    &lt;log type=\"coverage-text\" target=\"php:\/\/stdout\" showUncoveredFiles=\"false\"&gt;&lt;\/log&gt;\n  &lt;\/logging&gt;\n\n  &lt;filter&gt;\n    &lt;whitelist&gt;\n      &lt;directory&gt;.\/src&lt;\/directory&gt;\n    &lt;\/whitelist&gt;\n  &lt;\/filter&gt;\n&lt;\/phpunit&gt;<\/code><\/pre>\n<p>Successivamente, puoi eseguire manualmente PHPUnit e vedere un buon output di copertura del codice.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c93ef83.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-162830-61e745c93ef83.png\" alt=\"Quando CloverCoverage fallisce e passa contemporaneamente\" ><\/a><\/p>\n<p>Oppure puoi eseguire GrumPHP per vedere il segno di spunta verde fisso (supponendo che i tuoi test rientrino nell&#8217;intervallo che hai definito <strong>grump.yml<\/strong> ).<\/p>\n<h2>Il risultato finale<\/h2>\n<p>Anche se possono sembrare molti passaggi (e suppongo che lo siano), non ci vuole molto per ottenere questa configurazione e funzionare correttamente. Si spera che la procedura dettagliata sopra ti faccia risparmiare un po&#8217; di tempo quando lavori con PHP, PHPUnit e cos\u00ec via quando CloverCoverage fallisce (e riesce contemporaneamente durante la distribuzione continua).<\/p>\n<p>Attualmente sto scrivendo un eBook (insieme a una variet\u00e0 di altri contenuti premium). Se sei interessato, <a href=\"https:\/\/tommcfarlin.com\/registration-info\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">controlla cosa ottieni<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La seguente procedura dettagliata dovrebbe farti risparmiare un po&#8217; di tempo quando lavori con PHP, PHPUnit e cos\u00ec via quando CloverCoverage fallisce (e riesce contemporaneamente durante la distribuzione continua) in modo da sapere cosa stai facendo per far funzionare correttamente PHPUnit e Clover sul tuo sistema .<\/p>\n","protected":false},"author":1,"featured_media":162831,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[804],"tags":[1168],"class_list":["post-230950","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=230950"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/162831"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}