diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
commit | 074785cea106179cb3305637055ab0a009ca74f2 (patch) | |
tree | e6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/pt-br/mozilla/testing | |
parent | da78a9e329e272dedb2400b79a3bdeebff387d47 (diff) | |
download | translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2 translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip |
initial commit
Diffstat (limited to 'files/pt-br/mozilla/testing')
-rw-r--r-- | files/pt-br/mozilla/testing/analise_estatica_clang/index.html | 92 | ||||
-rw-r--r-- | files/pt-br/mozilla/testing/index.html | 13 |
2 files changed, 105 insertions, 0 deletions
diff --git a/files/pt-br/mozilla/testing/analise_estatica_clang/index.html b/files/pt-br/mozilla/testing/analise_estatica_clang/index.html new file mode 100644 index 0000000000..41e019a53e --- /dev/null +++ b/files/pt-br/mozilla/testing/analise_estatica_clang/index.html @@ -0,0 +1,92 @@ +--- +title: Análise estática do Clang +slug: Mozilla/Testing/Analise_estatica_Clang +tags: + - analisador estático + - clang +translation_of: Mozilla/Testing/Clang_static_analysis +--- +<div class="warning"> +<p><strong>Boas novas:</strong> Se você quer fazer o build com o plugin Mozilla Clang (localizado em <code>/build/clang-plugin</code> e associado com o <code>MOZ_CLANG_PLUGIN</code> e os atributos em <code>/mfbt/Attributes.h</code>), é muito mais fácil que isso: apenas adicionar <code>--enable-clang-plugin</code> ao seu mozconfig!</p> +</div> + +<p>O Clang tem um <a class="external" href="http://clang-analyzer.llvm.org/" title="http://clang-analyzer.llvm.org/">analisador estático embutido</a>. A ideia principal é você adicionar um empacotador no compilador que direciona todos os resultados da análise estácica para um local comum. No fim do build, esses relatórios são juntos em um documento único mostrando todos os possíveis problemas.</p> + +<p>Essas instruções irão apenas funcionar onde o Mozilla já compila com o Clang. No momento que isto é escrito, o Mac OS X e o GNU/Linux tem um suporte mais forte. Por favor, perceba que a maior parte do esforço do analisador estático no Clang são majoritariamente feitos em <a href="http://clang.llvm.org/extra/clang-tidy/">clang-tidy</a>, uma vez que os verificadores são muito mais fáceis de escrever.</p> + +<p>Idealmente, a análise estática seria feita independentemente da compilação. Veja {{ bug("663442") }} para localizar uma solução alternativa que facilita a análise estática.</p> + +<h2 class="ace-line" id="Instalando_o_Clang">Instalando o Clang</h2> + +<p>O primeiro passo para executar uma análise estática é instalando o Clang. Atualmente, ele está disponível para a maioria das distribuições GNU/Linux mas também está disponível com Xcode como o compilador padrão.</p> + +<h2 id="Configurando_o_ambiente_de_build">Configurando o ambiente de build</h2> + +<p>Uma vez que você tiver o build do seu Clang pronto, você irá precisar preparar ferramentas para usá-lo. Veja um .mozconfig totalmente funcional para o navegador desktop:</p> + +<pre>. $topsrcdir/browser/config/mozconfig +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff-dbg + +ac_add_options --enable-debug +</pre> + +<p>Tentativas de usar o <code><a href="/en/ccache" title="ccache">ccache</a></code> irá muito provavelmente resultar em falhas de compilação. É também necessário evitar builds otimizados, uma vez que estes irão modificar as macros no que resulta em muitos falso-positivos.</p> + +<p>Nessa altura, o ambiente build do seu Mozilla deve estar configurado para compilar através do analisador estático do Clang!</p> + +<h2 id="Realizando_scan_no_build">Realizando scan no build</h2> + +<p>Não é o suficiente simplesmente iniciar o build do forma normal. Em vez disso, você precisa executar o build através de um script utilitário do Clang que irá acompanhar toda a análise produzida e consolidá-la automaticamente.</p> + +<p>Esse scritp é o scan-build. Você pode encontrá-lo em $clang_source/tools/scan-build/scan-build.</p> + +<p>Tente executar o seu build com o scan-build:</p> + +<pre>$ cd /path/to/mozilla/source + +# Blow away your object directory because incremental builds don't make sense +$ rm -rf obj-dir + +# To start the build: +scan-build --show-description ./mach build -v + +# The above should execute without any errors. However, it should take longer than +# normal because all compilation will be executing through Clang's static analyzer, +# which adds overhead. +</pre> + +<p>Se tudo estiver ocorrendo bem, você deve ver muitas informações no console, assim como qualquer build.</p> + +<p>Na primeira vez que você rodar o scan-build, dê CTRL+C depois que alguns arquivos forem compilados. Você deve ver uma saída como essa:</p> + +<pre>scan-build: 3 bugs found. +scan-build: Run 'scan-view /Users/gps/tmp/mcsb/2011-12-15-3' to examine bug reports. +</pre> + +<p>Se você ver uma mensagem como essa:</p> + +<pre>scan-build: Removing directory '/var/folders/s2/zc78dpsx2rz6cpc_21r9g5hr0000gn/T/scan-build-2011-12-15-1' because it contains no reports. +</pre> + +<p>ou nenhum resultado de análise estática está disponível ainda ou seu ambiente não está configurado corretamente.</p> + +<p>Por padrão, <code>scan-build</code> produz resultados em um diretório em uma localização pseudo-temporária. Você pode controlar onde os resultados vão ao passar o argumento <code>-o /path/to/output</code> no script <code>scan-build</code>.</p> + +<p>Você pode também querer executar <code>scan-build --help</code> para ver todas as opções disponíveis. É possível habilitar ou desabilitar seletivamente analisadores individuais, por exemplo.</p> + +<h2 id="Analisando_a_saída">Analisando a saída</h2> + +<p>Uma vez que o build estiver completado, o script <code>scan-build</code> irá produzir um relatório resumindo tudo que foi encontrado. Este é chamado de <code>index.html</code> no diretório de saída. Você pode executar o <code>scan-view</code> (em <code>$clang_source/tools/scan-view/scan-view</code>) como a saída do <code>scan-build</code> sugere; isso meramente ativa um servidor HTTP local. Ou você deve poder abrir o <code>index.html</code> diretamente no seu navegador.</p> + +<h2 id="Falso-positivos">Falso-positivos</h2> + +<p>Há muitos falso-positivos atualmente no analisador estático. Muitos deles são devido ao analisador ter dificuldades em seguir o relativamente complicado tratamento de erros em várias macros do pré-processador. Por exemplo, a maioria das nossas macros <code>ASSERT()</code> chamam outras funções as quais elas chamam <code>assert()</code> ou fazem alguma outra coisa.</p> + +<p>A longo-prazo, nós devemos adicionar um conjunto de macros habilidados via <code>#ifdef</code> o que fornece simples e compreensíveis macros. Há também algumas <code>pragma</code>s e extensões do compilador que podemos investigar usando avisos silenciosos.</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en/Configuring_Build_Options" title="Configuring Build Options">Configurando Opções de Build</a></li> + <li><a href="/En/Developer_Guide" title="Developer Guide">Guia do Desenvolvedor</a></li> +</ul> diff --git a/files/pt-br/mozilla/testing/index.html b/files/pt-br/mozilla/testing/index.html new file mode 100644 index 0000000000..694d1a2b9a --- /dev/null +++ b/files/pt-br/mozilla/testing/index.html @@ -0,0 +1,13 @@ +--- +title: Testing Mozilla code +slug: Mozilla/Testing +tags: + - Landing + - Mozilla + - NeedsTranslation + - Testing + - TopicStub +translation_of: Mozilla/Testing +--- +<p><span class="seoSummary">Testing your code is important! Before you can even get your code committed into the source tree, you have to test it, and larger patches have to have automated tests. These articles will help you master (and continue to excel at) testing Mozilla code.</span></p> +<p>{{LandingPageListSubpages}}</p> |