<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Sonda Blog</title>
        <link>https://danie1net0.github.io/sonda/pt-BR/blog</link>
        <description>Sonda Blog</description>
        <lastBuildDate>Fri, 30 Oct 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>pt-BR</language>
        <item>
            <title><![CDATA[Sonda 1.16: cobertura de branches para PHP sem Xdebug, agora em inglês]]></title>
            <link>https://danie1net0.github.io/sonda/pt-BR/blog/sonda-1-16</link>
            <guid>https://danie1net0.github.io/sonda/pt-BR/blog/sonda-1-16</guid>
            <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[O Sonda mede a cobertura de linhas e de branches de uma suíte de testes PHP instrumentando o fonte,]]></description>
            <content:encoded><![CDATA[<p>O Sonda mede a cobertura de linhas e de branches de uma suíte de testes PHP instrumentando o fonte,
em vez de se enganchar no motor. A versão 1.16 o torna um projeto para todo mundo: a CLI, o README e
este site estão em inglês, e o pacote está no Packagist como <code>ddr/sonda</code>.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="por-que-mais-uma-ferramenta-de-cobertura">Por que mais uma ferramenta de cobertura<a href="https://danie1net0.github.io/sonda/pt-BR/blog/sonda-1-16#por-que-mais-uma-ferramenta-de-cobertura" class="hash-link" aria-label="Link direto para Por que mais uma ferramenta de cobertura" title="Link direto para Por que mais uma ferramenta de cobertura" translate="no">​</a></h2>
<p>O nosso CI media a cobertura com o <code>--path-coverage</code> do Xdebug, o único jeito de ter branches em PHP.
Numa suíte Laravel de 4.500 testes, não terminava em uma hora. O PCOV é rápido, mas só conta linhas.
Queríamos "100% das linhas e dos branches do que este merge request mudou" como trava de merge, e
nada dava isso no tempo do CI.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="o-que-ele-faz">O que ele faz<a href="https://danie1net0.github.io/sonda/pt-BR/blog/sonda-1-16#o-que-ele-faz" class="hash-link" aria-label="Link direto para O que ele faz" title="Link direto para O que ele faz" translate="no">​</a></h2>
<p>O Sonda insere uma sonda em cada desfecho de branch antes de o arquivo carregar, como o Istanbul faz
no JavaScript. Uma sonda é uma atribuição num array; não há interceptação de opcodes nem enumeração
de caminhos. Na mesma suíte: 178s sem cobertura, 174s com o Sonda, 671s com o Xdebug contando só
linhas.</p>
<p>A semântica dos branches é estrita por padrão: um <code>if</code> sem <code>else</code> ainda precisa dos dois desfechos,
<code>?-&gt;</code> conta o lado nulo, e <code>&amp;&amp;</code>/<code>||</code> precisam curto-circuitar ao menos uma vez. A suíte inteira foi
comparada com o path coverage do Xdebug, método a método; a <a class="" href="https://danie1net0.github.io/sonda/pt-BR/docs/comparison-with-xdebug">página de comparação</a>
tem os números e as diferenças documentadas.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="no-ci">No CI<a href="https://danie1net0.github.io/sonda/pt-BR/blog/sonda-1-16#no-ci" class="hash-link" aria-label="Link direto para No CI" title="Link direto para No CI" translate="no">​</a></h2>
<p><code>sonda test --changed=origin/master</code> mede só os arquivos que o branch mudou e reprova se qualquer
linha ou branch deles ficar descoberta. <code>--affected</code> roda só os testes que executaram esses arquivos.
O GitLab ganha de graça as anotações do Cobertura no diff e os apontamentos de Code Quality; há
receitas para <a class="" href="https://danie1net0.github.io/sonda/pt-BR/docs/ci/gitlab">GitLab</a> e <a class="" href="https://danie1net0.github.io/sonda/pt-BR/docs/ci/github-actions">GitHub Actions</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="como-ter">Como ter<a href="https://danie1net0.github.io/sonda/pt-BR/blog/sonda-1-16#como-ter" class="hash-link" aria-label="Link direto para Como ter" title="Link direto para Como ter" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)"><span class="token function" style="color:hsl(207, 82%, 66%)">composer</span><span class="token plain"> require </span><span class="token parameter variable" style="color:hsl(207, 82%, 66%)">--dev</span><span class="token plain"> ddr/sonda</span><br></div><div class="token-line" style="color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)"><span class="token plain">vendor/bin/sonda </span><span class="token builtin class-name" style="color:hsl(29, 54%, 61%)">test</span><br></div></code></pre></div></div>
<p>PHP 8.4+, PHPUnit 12 ou Pest 4. Issues e pull requests no
<a href="https://github.com/danie1net0/sonda" target="_blank" rel="noopener noreferrer" class="">GitHub</a>.</p>]]></content:encoded>
            <category>Release</category>
            <category>Coverage</category>
        </item>
    </channel>
</rss>