Baixe esta extensão do Visual Studio Market Place (vs 2019), Visual Studio Market Place (vs 2022) ou baixe das versões. Versões mais antigas podem ser obtidas aqui.
Para .Net - que os adaptadores de teste são pacotes nuget. Por exemplo, a extensão NUnit Test Adapter não é suficiente.
Fine Code Coverage fornece cobertura de código usando uma das 3 ferramentas de cobertura diferentes. Nas versões anteriores, eram utilizadas duas ferramentas de cobertura, OpenCover e Coverlet, que serão referidas como 'cobertura antiga'.
A Microsoft agora fornece uma solução de cobertura gratuita que você pode optar por usar definindo a opção de enumeração RunMsCodeCoverage do Visual Studio Fine Code Coverage. Esta será provavelmente a ferramenta de cobertura preferida da maioria dos desenvolvedores. Atualmente está em Beta.
Com a cobertura antiga era possível à FCC fornecer uma abstração sobre as opções de exclusão/inclusão de cada ferramenta. Esta abstração não funciona para cobertura de código MS.
Assim, você descobrirá que existem opções de configuração separadas para cobertura Ms versus cobertura antiga e opções que são comuns às duas. Exclusões e inclusões em nível de montagem podem ser obtidas - consulte ExcludeAssemblies e IncludeAssemblies. A configuração é (principalmente) determinada pelas opções do Visual Studio, arquivos finecodecoverage-settings.xml e propriedades do projeto msbuild. Todas essas configurações são opcionais. Para opções que possuem escopo de projeto, essas configurações formam uma hierarquia onde os níveis inferiores substituem ou, para coleções, substituem ou se fundem com o nível acima. Isto é descrito em detalhes mais adiante.
Independentemente da ferramenta de cobertura empregada, o processo começa com a reação da FCC ao explorador de testes no Visual Studio. Uma das 3 ferramentas de cobertura fornece os resultados de cobertura e os resultados podem ser abertos a partir de botões na janela da ferramenta de cobertura de código fino. Esta cobertura não é dinâmica e representa a cobertura obtida na última vez que você executou testes. Quando a cobertura ficar desatualizada, você pode clicar no botão 'FCC Clear UI' em Ferramentas ou executar a cobertura novamente.
Detalhes de como a FCC está progredindo com a cobertura de código podem ser encontrados na guia Log de cobertura na janela Ferramenta de cobertura de código fino com registros mais detalhados no painel da janela de saída da FCC. Se você tiver problemas, fornecer os logs da janela de saída ajudará a entender a natureza do problema.
Apresente um único relatório unificado na janela da ferramenta de cobertura de código fino. O relatório mostra a cobertura de linhas e ramais e pontos de acesso de risco com a facilidade de abrir seus arquivos de classe.
Margens coloridas para indicar o status de cobertura do seu código. As linhas de código instrumentadas (incluídas e analisáveis) são cobertas, descobertas ou parcialmente cobertas, o que significa que nem todas as ramificações foram executadas.
A FCC fornece o conceito de regiões sujas onde o código instrumentado anteriormente não mostrará mais o status instrumentado depois que você alterar o código.
Para C# e Visual Basic fornece mais informações de cobertura:
A FCC também permite que você veja o código que não foi incluído na cobertura e as novas linhas que foram adicionadas desde a última execução da cobertura.
A coloração de linha suja e nova precisa ser ativada nas opções.
Se desejar, as linhas também podem ser destacadas definindo as opções disponíveis do Visual Studio. Continue lendo para mais detalhes.
As cores podem ser controladas via Visual Studio/Ferramentas/Opções/Ambiente/Fontes e Cores/Editor de Texto/Itens de Exibição:
Para Visual Studio Community, Professional e Enterprise você pode usar as configurações
Cobertura da área tocada FCC
Cobertura Área Parcialmente Tocada FCC
Cobertura Área Não Tocada FCC
Cobertura Área Suja FCC
Cobertura Área de Novas Linhas FCC
Cobertura não incluída Área FCC
Para versões que fornecem os itens abaixo a FCC irá utilizá-los por padrão em vez dos itens equivalentes da FCC para que as cores definidas nos temas possam ser utilizadas. Se desejar ser consistente para os 5 itens disponíveis, você pode definir UseEnterpriseFontsAndColors como false.
Área de cobertura não tocada
Cobertura Área Parcialmente Tocada
Área tocada de cobertura
Você pode desativar a coloração do editor definindo a opção do Visual Studio EditorCoverageColouringMode como Desativada. Você também pode definir a opção como DoNotUseRoslynWhenTextChanges se houver um problema de desempenho. Ao fazer isso, a coloração de novas linhas não será tão boa. Se você mudar para uma das opções EditorCoverageColouringMode, precisará executar novamente a cobertura.
Você pode alternar a coloração do editor. A FCC adiciona um botão de menu, Alternar indicadores, no menu Ferramentas. Você também pode criar um atalho de teclado - Ferramentas/Opções/Ambiente/Teclado, mostrar comandos contendo "ToggleIndicators".
Para componentes Blazor com blocos @code, linhas de cobertura podem ser geradas fora dessas regiões. Quando a árvore de sintaxe Roslyn estiver disponível para FCC, você poderá definir a opção BlazorCoverageLinesFromGeneratedSource como true para limitar as linhas de cobertura no arquivo .razor àquelas na origem gerada.
A FCC rastreia o editor do Visual Studio e salva essas informações quando um arquivo é fechado. Se, ao reabrir um arquivo, o texto for alterado fora da janela do documento, não haverá marcas de cobertura para esse arquivo, pois não se espera mais que as linhas de cobertura estejam corretas.
Também não haverá marcas de editor se você editar um arquivo enquanto a FCC coleta cobertura.
Com a cobertura antiga, a FCC precisava copiar sua dll de teste e dependências e executar OpenCover ou Coverlet nesses arquivos. Isso não é necessário com cobertura de código MS. A cobertura antiga esperaria até que os testes terminassem antes de iniciar a ferramenta de cobertura para executar novamente todos os testes. Isso não é necessário com cobertura de código MS. A cobertura antiga era baseada em todos os testes. A cobertura do código Ms é a cobertura dos testes selecionados no explorador de testes.
Suporta C++! Observe que a FCC não foi testada adequadamente com projetos C++, mas com uma classe C++ simples, testada com o Google Test, a FCC fornece cobertura.
Primeiramente você precisa alterar a opção RunMsCodeCoverage de No.
A cobertura de código da MS requer um arquivo runsettings configurado adequadamente para cobertura de código. Isso requer que você tenha o pacote de cobertura de código ms e tenha apontado para ele com o elemento TestAdaptersPaths, bem como especifique o coletor de dados ms. Exclusões e inclusões também são especificadas nas configurações de execução. Não acho que a documentação seja clara o suficiente sobre como isso funciona, então você pode querer analisar esse problema.
A FCC não exige que você faça isso. Se você não fornecer runsettings e RunMsCodeCoverage for Sim, a FCC gerará um e gravará a entrada necessária no arquivo do projeto.
Observe que ter um arquivo de projeto de teste aberto no Visual Studio durante a execução de testes pode resultar em um aviso de conflito quando a FCC remove a entrada no final do teste. Se RunMsCodeCoverage for IfInRunSettings, se o projeto tiver runsettings que inclua o elemento coletor de dados ms configurado corretamente, a FCC processará os resultados coletados.
A FCC inclui o pacote de cobertura de código ms e criará o arquivo runsettings necessário para cada projeto de teste executado na janela do explorador de testes. As exclusões e inclusões virão das configurações combinadas, de forma semelhante à cobertura antiga. Como a cobertura de código ms usa regex e possui diferentes métodos de exclusão/inclusão para Coverlet e OpenCover existem opções específicas do Visual Studio e elementos associados.
Como a FCC fornece um arquivo runsettings para cada projeto de teste (se você não forneceu uma solução ampla ou específica do projeto), ele deve gravar o elemento RunSettingsFilePath no arquivo do projeto.
Embora a FCC apague o valor deste elemento do arquivo do projeto, ele ainda está presente.
A FCC cria as configurações de execução a partir de um modelo usando substituição de string. Se desejar, você pode fornecer seus próprios modelos. A FCC procurará fcc-ms-runsettings-template.xml no diretório do projeto ou no diretório da solução. Seu modelo precisa ser um documento XML válido, mas não precisa fornecer todos os elementos de configurações de execução. A FCC adicionará os elementos substituíveis ResultsDirectory e TestAdaptersPaths (e o elemento RunConfiguration do contêiner, se necessário), se não estiverem presentes. A FCC também adicionará os elementos substituíveis ms DataCollector/Configuração/CodeCoverage, se não estiverem presentes. Ele também adicionará os elementos CodeCoverage recomendados de não exclusão/inclusão, AllowLowIntegrityProcesses, CollectFromChildProcesses, CollectAspDotNet e UseVerifiableInstrumentation, se não forem fornecidos. UseVerifiableInstrumentation será falso para .Net Framework. Para ver as configurações de execução geradas, use o elemento RunSettingsFilePath no arquivo do projeto.
Para um modelo personalizado, que fornece seus próprios elementos que de outra forma seriam fornecidos pela FCC, para participar da substituição do modelo, você precisa adicionar strings do tipo %fcc_replace%.
Exclui e inclui segue o formato "%fcc_modulepaths_exclude%". Para que a FCC forneça o caminho de cobertura de código ms fornecido pela FCC para TestAdaptersPaths, use %fcc_testadapter%.
Também é possível usar seu próprio arquivo runsettings e fazer com que a FCC o adicione e substitua. A FCC garantirá que o elemento TestAdaptersPaths esteja presente, bem como o coletor de dados ms. Ao contrário de um modelo, se o coletor de dados ms estiver presente, o xml terá apenas a substituição aplicada a ele.
A cobertura de código da MS fornece um elemento Configuration/CodeCoverage padrão, se não for fornecido. Ele também adicionará algumas exclusões padrão, se não estiverem presentes, ou as mesclará, a menos que você adicione o atributo mergeDefaults='false'. Por exemplo, os atributos excluem ExcludeFromCodeCoverageAttribute. Se você estiver interessado, consulte ...AppDataLocalFineCodeCoveragemsCodeCoverage_version_buildnetstandard1.0Microsoft.VisualStudio.TraceDataCollector.dll e o DynamicCoverageDataCollector.
Verifique a solução de problemas antes de relatar um problema.
As DLLs são copiadas para uma subpasta da pasta de saída do projeto, o que pode afetar seus testes. A alternativa é definir a opção AdjacentBuildOutput como true. A cobertura é fornecida pelo OpenCover para projetos de estilo antigo e Coverlet para projetos SDK de novo estilo. Embora a FCC forneça uma abstração sobre ambos, para que seja possível ignorar as diferenças entre os dois, há circunstâncias em que é importante estar ciente da ferramenta de cobertura que será executada. Isso fica mais aparente quando o Coverlet é usado. Continue lendo para obter detalhes.
O outro cenário seria quando você deseja usar uma versão específica da ferramenta de cobertura. Isso pode ser configurado.
As ferramentas de cobertura que a FCC utiliza são instaladas por padrão no diretório FineCodeCoverage em Environment.SpecialFolder.LocalApplicationData
. Isso pode ser alterado com a opção ToolsDirectory Visual Studio. Certifique-se de que esse diretório exista e, ao reiniciar, as ferramentas serão instaladas nele.
Execute alguns testes de unidade e ...
A hierarquia é a seguinte:
a) Opções do Visual Studio
b) arquivos finecodecoverage-settings.xml
Eles são encontrados percorrendo a estrutura de diretórios do diretório do projeto. Ao aplicar o atributo topLevel='true' ao elemento raiz, a caminhada é interrompida.
Dado finecodecoverage-settings.xml no diretório do projeto e finecodecoverage-settings.xml no diretório da solução, a hierarquia é:
Opções do Visual Studio
Nível de solução finecodecoverage-settings.xml
Nível de projeto finecodecoverage-settings.xml
<FineCodeCoverage>
<Enabled>
True
</Enabled>
<!-- and more -->
</FineCodeCoverage>
c) arquivo de projeto msbuild
Existem duas maneiras de fornecer essas configurações. Diretamente no arquivo do projeto
<PropertyGroup Label="FineCodeCoverage">
<Enabled>
True
</Enabled>
<Exclude>
[ThirdParty.*]*
[FourthParty]*
</Exclude>
<Include>
[*]*
</Include>
<ExcludeByFile>
**/Migrations/*
**/Hacks/*.cs
</ExcludeByFile>
<ExcludeByAttribute>
MyCustomExcludeFromCodeCoverage
</ExcludeByAttribute>
<IncludeTestAssembly>
True
</IncludeTestAssembly>
<ModulePathsExclude>
.*Fabrikam.Math.UnitTest.dll
</ModulePathsExclude>
<!-- and more -->
</PropertyGroup>
Com o elemento FineCodeCoverage.
<PropertyGroup>
<FineCodeCoverage>
<Enabled>
True
</Enabled>
<!-- and more -->
</FineCodeCoverage>
</PropertyGroup>
Isso é necessário se você armazenar as configurações do projeto fora do arquivo do projeto e usar o msbuild Import.
Também é necessário se você deseja que o elemento de configuração seja mesclado com aquele do nível acima, pois o msbuild não oferece suporte a atributos personalizados.
O padrão é substituir cada propriedade da coleção. Isso pode ser alterado para todas as configurações definindo defaultMerge='true' no elemento raiz.
Se você fornecer o atributo merge em um elemento de configuração, ele será usado.
Isso não é transitivo.
<PropertyGroup>
<FCCExcludeFromCodeCoverage/>
</PropertyGroup>
<PropertyGroup>
<UseDataCollector/>
</PropertyGroup>
Coverlet tem diferentes "drivers". No passado, o Fine Code Coverage usava apenas o driver do console coverlet. Isso tem alguns problemas associados a ele. Se você encontrar cobertura de 0% ou cobertura inconsistente, agora é possível mudar para o driver Data Collector. Este é o melhor driver, mas não pode ser usado para todos os projetos. Por enquanto, isso é opcional. No futuro, a Cobertura de Código de Multa determinará o driver apropriado. Consulte a documentação da capa para obter suporte à versão.
Observe que não é necessário adicionar o pacote nuget coverlet.collector, pois a FCC o fornece internamente.
A Fine Code Coverage usará o driver Data Collector em duas circunstâncias:
As configurações do Coverlet Data Collector podem ser encontradas aqui. Se você estiver usando a opção 2) acima, as configurações comuns (exclusões e inclusões) serão geradas a partir das propriedades do projeto (acima) e das opções globais do visual studio (veja abaixo) com as propriedades do projeto tendo precedência. Se você estiver usando a opção 1), as opções globais e de projeto serão usadas somente onde um elemento de configuração de configurações comuns estiver ausente e a opção RunSettingsOnly (veja abaixo) tiver sido alterada para falso.
Opção | Descrição |
---|---|
Comum | |
EditorCoberturaColoringMode | Defina como Desativado ou como DoNotUseRoslynWhenTextChanges se houver um problema de desempenho |
BlazorCoverageLinesFromGeneratedSource | Defina como verdadeiro para limitar as linhas de cobertura no arquivo .razor àquelas na fonte gerada (quando disponível) |
MostrarCobertura do Editor | Defina como falso para desativar todos os indicadores de cobertura do editor |
ShowCoverageInGlyphMargin | Defina como falso para evitar marcas de cobertura na margem do glifo |
ShowCoveredInGlyphMargin | Defina como falso para evitar marcas cobertas na margem do glifo |
ShowUncoveredInGlyphMargin | Defina como falso para evitar marcas descobertas na margem do glifo |
MostrarPartiallyCoveredInGlyphMargin | Defina como falso para evitar marcas parcialmente cobertas na margem do glifo |
ShowDirtyInGlyphMargin | Defina como verdadeiro para mostrar marcas sujas na margem do glifo |
MostrarNovoInGlyphMargin | Defina como verdadeiro para mostrar novas marcas de linha na margem do glifo |
ShowCoverageInOverviewMargem | Defina como falso para evitar marcas de cobertura na margem de visão geral |
ShowCoveredInOverviewMargem | Defina como falso para evitar marcas cobertas na margem de visão geral |
ShowUncoveredInOverviewMargem | Defina como falso para evitar marcas descobertas na margem de visão geral |
MostrarParcialmenteCoveredInOverviewMargem | Defina como falso para evitar marcas parcialmente cobertas na margem de visão geral |
ShowDirtyInOverviewMargem | Defina como verdadeiro para mostrar marcas sujas na margem da visão geral |
ShowNewInOverviewMargem | Defina como verdadeiro para mostrar novas marcas de linha na margem da visão geral |
ShowLineCoverageDestaque | Defina como verdadeiro para permitir o realce da linha de cobertura |
ShowLineCoveredDestaque | Defina como falso para evitar o realce da linha coberta |
ShowLineUncoveredDestaque | Defina como falso para evitar realce de linha descoberta |
ShowLinePartiallyCoveredDestaque | Defina como falso para evitar realce de linhas parcialmente cobertas |
ShowLineDirtyDestacando | Defina como verdadeiro para mostrar o destaque da linha suja |
ShowLineNewDestaque | Defina como verdadeiro para mostrar o realce da nova linha |
UsarEnterpriseFontsAndColors | Defina como falso para usar itens de fontes e cores da FCC |
ShowToolWindowBarra de ferramentas | Defina como false para ocultar a barra de ferramentas na janela de ferramentas. Requer a reinicialização do Visual Studio. A barra de ferramentas possui botões para visualização do xml da Cobertura e dos hotspots de risco. |
Nome do diretório de saída da solução FCC | Para que a saída do FCC fique visível em uma subpasta da sua solução, forneça este nome |
Diretório de ferramentas | Pasta para a qual copiar a subpasta de ferramentas. Já deve existir. Requer reinicialização do VS. |
Limite para complexidade ciclomática | Quando a complexidade ciclomática exceder esse valor para um método, o método estará presente na guia pontos críticos de risco. |
StickyCoverageTable | Definido como verdadeiro para que a tabela de cobertura tenha uma ponta pegajosa. |
Classes com namespace | Defina como falso para mostrar os tipos no relatório em formato abreviado. Afeta o agrupamento. |
NamespaceQualificação | Controlar a qualificação dos tipos no relatório quando NamespacedClasses for verdadeiro. Totalmente Qualificado - sempre qualificado totalmente. AlwaysUnqualified - sempre não qualificado. UnqualifiedByNamespace - não qualificado ao agrupar por namespace. QualifiedByNamespaceLevel - omite as partes do identificador do primeiro nível de agrupamento. Reduz o espaço, mantendo a exclusividade. |
Esconder-se totalmente coberto | Defina como true para ocultar classes, namespaces e assemblies totalmente cobertos. |
Hide0Coverage | Defina como verdadeiro para ocultar classes, namespaces e assemblies que tenham 0% de cobertura. |
Hide0Coverable | Defina como false para mostrar classes, namespaces e assemblies que não podem ser cobertos. |
Habilitado | Especifica se a saída de cobertura está habilitada ou não |
DesativadoSemCobertura | Defina como falso para VS Option Enabled=false para não desabilitar a cobertura |
ExecutarQuandoTestesFail | Por padrão, a cobertura é executada quando os testes falham. Defina como falso para evitar isso. Não pode ser usado em conjunto com RunInParallel |
ExecutarQuandoTestesExceed | Especifique um valor para executar apenas a cobertura com base no número de testes em execução. Não pode ser usado em conjunto com RunInParallel |
RunMsCodeCoverage | Mude para IfInRunSettings para coletar apenas com configurações de execução configuradas. Sim para geração de runsettings. |
IncluirTestAssembly | Especifica se a cobertura de código do assembly de teste deve ser relatada |
Incluir Projetos Referenciados | Defina como verdadeiro para adicionar todos os projetos referenciados diretamente a Incluir. |
Incluir montagens | Forneça uma lista de montagens a serem incluídas na cobertura. O nome da dll sem extensão é usado para correspondência. |
Excluir Assemblies | Forneça uma lista de montagens a serem excluídas da cobertura. O nome da dll sem extensão é usado para correspondência. |
OpenCover / Coverlet | |
AdjacenteBuildOutput | Se seus testes dependem do caminho deles, defina isso como verdadeiro. |
Excluir | Filtre expressões para excluir módulos e tipos específicos (múltiplos valores) |
Incluir | Filtre expressões para incluir módulos e tipos específicos (múltiplos valores) |
Excluir por arquivo | OpenCover usa * correspondência de curinga. Coverlet usa globbing do sistema de arquivos |
ExcluirByAttribute | Exclua código atribuído em nível de montagem, tipo e método. Adicione tipos de atributos totalmente qualificados ou não qualificados. |
Executar em paralelo | Por padrão, os testes OpenCover/Coverlet são executados e, em seguida, a cobertura é realizada. Defina como verdadeiro para executar a cobertura imediatamente |
Cobertura do código Ms | Cada um dos itens abaixo é uma matriz de regexes a serem transformadas em elementos runsettings, consulte |
ModulePathsExcluir | Excluir – Corresponde aos assemblies especificados pelo nome do assembly ou caminho do arquivo. |
ModulePathsIncluir | Incluir - Corresponde aos assemblies especificados pelo nome do assembly ou caminho do arquivo. |
Nomes de empresasExcluir | Excluir – Corresponde aos assemblies pelo atributo Empresa. |
Nomes de EmpresasIncluir | Incluir – Corresponde aos assemblies pelo atributo Empresa. |
Exclusão de PublicKeyTokens | Excluir - Corresponde aos assemblies assinados pelo token de chave pública. |
Incluir PublicKeyTokens | Incluir - Corresponde aos assemblies assinados pelo token de chave pública. |
FontesExcluir | Excluir – Corresponde os elementos pelo nome do caminho do arquivo de origem no qual eles estão definidos. |
FontesIncluir | Incluir – Corresponde os elementos pelo nome do caminho do arquivo de origem no qual eles estão definidos. |
AtributosExcluir | Excluir - Corresponde aos elementos que possuem o atributo especificado. Especifique o nome completo do atributo |
AtributosIncluir | Incluir - Corresponde aos elementos que possuem o atributo especificado. Especifique o nome completo do atributo |
FunçõesExcluir | Excluir – Corresponde procedimentos, funções ou métodos por nome totalmente qualificado, incluindo a lista de parâmetros. |
FunçõesIncluir | Incluir – Corresponde procedimentos, funções ou métodos por nome totalmente qualificado, incluindo a lista de parâmetros. |
Colcha | |
Executar configurações somente | Especifique false para opções globais e de projeto a serem usadas para elementos de configuração do coletor de dados coverlet quando não especificado em runsettings |
CoverletCollectorDirectoryPath | Especifique o caminho para o diretório que contém os arquivos do coletor de colchas se precisar de funcionalidades que a versão FCC não oferece. |
CoverletConsoleLocal | Especifique true para usar sua própria instalação local de ferramentas dotnet do console coverlet. |
CoverletConsoleCustomPath | Especifique o caminho para o exe do console coverlet se precisar de funcionalidades que a versão FCC não oferece. |
CoverletConsoleGlobal | Especifique true para usar sua própria instalação global de ferramentas dotnet do console coverlet. |
As configurações do "CoverletConsole" têm precedência Local/CustomPath/Global. | |
OpenCover | |
OpenCoverRegistrar | Mude do padrão se a determinação da FCC do caminho32 ou caminho64 estiver incorreta. |
OpenCoverTarget | Forneça seu próprio alvo, se necessário. |
OpenCoverTargetArgs | Se fornecer seu próprio alvo, você também poderá fornecer argumentos adicionais. A FCC fornece o caminho da dll de teste. |
OpenCoverCustomPath | Especifique o caminho para abrir o exe da capa se precisar de funcionalidades que a versão FCC não oferece. |
LimiteForNPathComplexidade | Quando a complexidade do npath exceder esse valor para um método, o método estará presente na guia pontos de acesso de risco. |
LimiteParaCrapScore | Quando a pontuação de lixo excede esse valor para um método, o método estará presente na guia de pontos críticos de risco. |
Você provavelmente deseja definir IncludeReferencedProjects como true. Isso garantirá que você não obtenha cobertura para testes de estruturas - apenas seu código.
Coverlet e OpenCover usam expressões de filtro. Filtrar expressões
Curingas
* => corresponde a zero ou mais caracteres Exemplos
[*]* => Todos os tipos em todas as montagens.
[coverlet.*]Coverlet.Core.Coverage => A classe Coverage no namespace Coverlet.Core pertencente a qualquer assembly que corresponda a coverlet.* (por exemplo, coverlet.core)
[*]Coverlet.Core.Instrumentation.* => Todos os tipos pertencentes ao namespace Coverlet.Core.Instrumentation em qualquer assembly
[coverlet.*.tests]* => Todos os tipos em qualquer montagem começando com coverlet. e terminando com .tests
As opções 'Excluir' e 'Incluir' podem ser usadas juntas, mas 'Excluir' tem precedência.
A cobertura do código Ms usa expressões regulares. Você pode incluir ou excluir assemblies ou tipos e membros específicos da análise de cobertura de código. Se a seção Incluir estiver vazia ou omitida, todos os assemblies carregados e com arquivos PDB associados serão incluídos. Se um assembly ou membro corresponder a uma cláusula na seção Excluir, ele será excluído da cobertura de código. A seção Excluir tem precedência sobre a seção Incluir: se um assembly estiver listado em Incluir e Excluir, ele não será incluído na cobertura de código.
Você pode ignorar um método ou uma classe inteira da cobertura de código aplicando o atributo [ExcludeFromCodeCoverage] presente no namespace System.Diagnostics.CodeAnalysis.
Para .Net (não .Net Framework) este atributo pode ser aplicado no nível do assembly.
Para .Net Framework, consulte FCCExcludeFromCodeCoverage, acima, para funcionalidade semelhante.
Para ignorar o código atribuído a um tipo diferente:
Você também pode ignorar atributos adicionais adicionando à lista 'ExcludeByAttribute'. Para Coverlet/OpenCover, adicione à lista 'ExcludeByAttribute' (totalmente qualificado ou não qualificado). Para cobertura de código MS, adicione à lista 'AttributesExclude'. Isso usa correspondência de regex.
As saídas da FCC, por padrão, estão dentro da pasta Debug de cada projeto de teste. Se preferir, você pode especificar uma pasta para conter os arquivos gerados internamente e usados pela FCC. Ambos os métodos abaixo procuram um diretório contendo um arquivo .sln em um diretório ascendente do diretório que contém o primeiro arquivo de projeto de teste. Se esse diretório de solução for encontrado, a lógica será aplicada.
Se o diretório da solução tiver um subdiretório fcc-output, ele será usado automaticamente.
Como alternativa, se você fornecer FCCSolutionOutputDirectoryName nas opções, o diretório será criado e usado, se necessário.
Confira as diretrizes de contribuição se você quiser contribuir para este projeto.
Para clonar e criar este projeto você mesmo, certifique-se de instalar a extensão Extensibility Essentials para Visual Studio, que habilita alguns recursos usados por este projeto.
Apache 2.0
Colcha
OpenCover
Gerador de relatórios
Provedor | Tipo | Link |
---|---|---|
PayPal | Uma vez | |
Liberapay | Recorrente |