Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
No Visual Studio, você pode criar e modificar um conjunto de regras personalizado para atender às necessidades específicas do projeto associadas à análise de código. Os conjuntos de regras padrão são armazenados em %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.
Visual Studio 2017 versão 15.7 e posterior: Você pode criar conjuntos de regras personalizados usando qualquer editor de texto e aplicá-los em compilações de linha de comando, independentemente do sistema de compilação que estiver usando. Para obter mais informações, consulte /analyze:ruleset.
Para criar um conjunto de regras C++ personalizado no Visual Studio, um projeto C/C++ deve ser aberto no IDE do Visual Studio. Em seguida, abra um conjunto de regras padrão no editor de conjunto de regras e, em seguida, adicione ou remova regras específicas e, opcionalmente, altere a ação que ocorre quando a análise de código determina que uma regra foi violada.
Para criar um novo conjunto de regras personalizado, salve-o usando um novo nome de arquivo. O conjunto de regras personalizadas é atribuído automaticamente ao projeto.
Para criar uma regra personalizada a partir de um único conjunto de regras existente
No Gerenciador de Soluções, abra o menu de atalho para o projeto e escolha Propriedades.
Na caixa de diálogo Property Pages, selecione a página de propriedades Propriedades de Configuração>Code Analysis>General.
Na lista suspensa Conjunto de regras , siga um destes procedimentos:
Escolha o conjunto de regras que deseja personalizar.
- ou -
Escolha <Procurar...> para especificar um conjunto de regras existente que não esteja na lista.
Escolha Abrir para exibir as regras no editor do conjunto de regras.
No Gerenciador de Soluções, abra o menu de atalho para o projeto e escolha Propriedades.
Na caixa de diálogo Property Pages, selecione a página de propriedades Configuration Properties>Code Analysis>Microsoft.
Na lista suspensa Regras Ativas, escolha uma das seguintes ações:
Escolha o conjunto de regras que deseja personalizar.
- ou -
Escolha <Procurar...> para especificar um conjunto de regras existente que não esteja na lista.
Escolha Abrir para exibir as regras no editor do conjunto de regras.
Para modificar um conjunto de regras no editor de conjuntos de regras
Para alterar o nome de exibição do conjunto de regras, no menu Exibir, escolha Janela de Propriedades. Digite o nome para exibição na caixa Nome . Observe que o nome para exibição pode ser diferente do nome do arquivo.
Para adicionar todas as regras do grupo a um conjunto de regras personalizado, marque a caixa de seleção do grupo. Para remover todas as regras do grupo, desmarque a caixa de seleção.
Para adicionar uma regra específica ao conjunto de regras personalizadas, marque a caixa de seleção da regra. Para remover a regra do conjunto de regras, desmarque a caixa de seleção.
Para alterar a ação executada quando uma regra é violada em uma análise de código, escolha o campo Ação para a regra e, em seguida, escolha um dos seguintes valores:
Aviso - gera um aviso.
Erro - gera um erro.
Info - gera uma mensagem.
Nenhum - desativa a regra. Essa ação é a mesma que remover a regra do conjunto de regras.
Para agrupar, filtrar ou alterar os campos no editor de conjunto de regras usando a barra de ferramentas do editor de conjunto de regras
Para expandir as regras em todos os grupos, escolha Expandir Tudo.
Para recolher as regras em todos os grupos, escolha Fechar tudo.
Para alterar o campo pelo qual as regras são agrupadas, escolha o campo na lista Agrupar por . Para exibir as regras desagrupadas, escolha <Nenhuma>.
Para adicionar ou remover campos em colunas de regras, escolha Opções de Coluna.
Para ocultar regras que não se aplicam à solução atual, escolha Ocultar regras que não se aplicam à solução atual.
Para alternar entre mostrar e ocultar regras atribuídas à ação Erro, escolha Mostrar regras que podem gerar erros de Análise de Código.
Para alternar entre mostrar e ocultar regras atribuídas à ação Aviso, escolha Mostrar regras que podem gerar avisos de Análise de Código.
Para alternar entre mostrar e ocultar regras atribuídas à ação Nenhum , escolha Mostrar regras que não estão habilitadas.
Para adicionar ou remover conjuntos de regras padrão da Microsoft ao conjunto de regras atual, escolha Adicionar ou remover conjuntos de regras filhas.
Para criar um conjunto de regras em um editor de texto
Você pode criar um conjunto de regras personalizado em um editor de texto, armazená-lo em qualquer local com uma .ruleset extensão e aplicá-lo com a opção de /analyze:ruleset compilador.
O exemplo a seguir mostra um arquivo de conjunto de regras básicas que você pode usar como ponto de partida:
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description="New rules to apply." ToolsVersion="10.0">
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C6001" Action="Warning" />
<Rule Id="C26494" Action="Warning" />
</Rules>
</RuleSet>
Esquema do conjunto de regras
O esquema de conjunto de regras a seguir descreve o esquema XML de um arquivo de conjunto de regras. O esquema do conjunto de regras é armazenado em %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Schemas\RuleSet.xsd. Você pode usá-lo para criar seus próprios conjuntos de regras programaticamente ou para validar se seus conjuntos de regras personalizados aderem ao formato correto. Para obter mais informações, consulte Como criar um documento XML com base em um esquema XSD.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation xml:lang="en">
Visual Studio Code Analysis Rule Set Schema Definition Language.
Copyright (c) Microsoft Corporation. All rights reserved.
</xs:documentation>
</xs:annotation>
<!-- Every time this file changes, be sure to change the Validate method for the corresponding object in the code -->
<xs:element name="RuleSet" type="TRuleSet">
</xs:element>
<xs:complexType name="TLocalization">
<xs:all>
<xs:element name="Name" type="TName" minOccurs="0" maxOccurs="1" />
<xs:element name="Description" type="TDescription" minOccurs="0" maxOccurs="1" />
</xs:all>
<xs:attribute name="ResourceAssembly" type="TNonEmptyString" use="required" />
<xs:attribute name="ResourceBaseName" type="TNonEmptyString" use="required" />
</xs:complexType>
<xs:complexType name="TRuleHintPaths">
<xs:sequence>
<xs:element name="Path" type="TNonEmptyString" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="TName">
<xs:attribute name="Resource" type="TNonEmptyString" use="required" />
</xs:complexType>
<xs:complexType name="TDescription">
<xs:attribute name="Resource" type="TNonEmptyString" use="required" />
</xs:complexType>
<xs:complexType name="TInclude">
<xs:attribute name="Path" type="TNonEmptyString" use="required" />
<xs:attribute name="Action" type="TIncludeAction" use="required" />
</xs:complexType>
<xs:complexType name="TIncludeAll">
<xs:attribute name="Action" type="TIncludeAllAction" use="required" />
</xs:complexType>
<xs:complexType name="TRule">
<xs:attribute name="Id" type="TNonEmptyString" use="required" />
<xs:attribute name="Action" type="TRuleAction" use="required" />
</xs:complexType>
<xs:complexType name="TRules">
<xs:sequence>
<xs:element name="Rule" type="TRule" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="AnalyzerId" type="TNonEmptyString" use="required" />
<xs:attribute name="RuleNamespace" type="TNonEmptyString" use="required" />
</xs:complexType>
<xs:complexType name="TRuleSet">
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="Localization" type="TLocalization" minOccurs="0" maxOccurs="1" />
<xs:element name="RuleHintPaths" type="TRuleHintPaths" minOccurs="0" maxOccurs="1" />
<xs:element name="IncludeAll" type="TIncludeAll" minOccurs="0" maxOccurs="1" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Include" type="TInclude" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Rules" type="TRules" minOccurs="0" maxOccurs="unbounded">
<xs:unique name="UniqueRuleName">
<xs:selector xpath="Rule" />
<xs:field xpath="@Id" />
</xs:unique>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="Name" type="TNonEmptyString" use="required" />
<xs:attribute name="Description" type="xs:string" use="optional" />
<xs:attribute name="ToolsVersion" type="TNonEmptyString" use="required" />
</xs:complexType>
<xs:simpleType name="TRuleAction">
<xs:restriction base="xs:string">
<xs:enumeration value="Error"/>
<xs:enumeration value="Warning"/>
<xs:enumeration value="Info"/>
<xs:enumeration value="Hidden"/>
<xs:enumeration value="None"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TIncludeAction">
<xs:restriction base="xs:string">
<xs:enumeration value="Error"/>
<xs:enumeration value="Warning"/>
<xs:enumeration value="Info"/>
<xs:enumeration value="Hidden"/>
<xs:enumeration value="None"/>
<xs:enumeration value="Default"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TIncludeAllAction">
<xs:restriction base="xs:string">
<xs:enumeration value="Error"/>
<xs:enumeration value="Warning"/>
<xs:enumeration value="Info"/>
<xs:enumeration value="Hidden"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TNonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
Detalhes do elemento do esquema:
| Elemento do esquema | Descrição |
|---|---|
TLocalization |
Informações de localização, incluindo nome do arquivo do conjunto de regras, descrição do arquivo do conjunto de regras, nome do assembly de recursos que contém o recurso localizado e nome base do recurso localizado |
TRuleHintPaths |
Caminhos de arquivo usados como dicas para procurar arquivos de conjunto de regras |
TName |
Nome do arquivo atual do conjunto de regras |
TDescription |
Descrição do arquivo atual do conjunto de regras |
TInclude |
Caminho para um conjunto de regras incluído com ação de uma regra |
TIncludeAll |
Ação de regra para todas as regras |
TRule |
ID da regra com ação da regra |
TRules |
Recolha de uma ou mais regras |
TRuleSet |
Formato de arquivo do conjunto de regras que consiste em informações de localização, caminhos de dica de regra, incluir todas as informações, incluir informações, informações de regras, nome, descrição e informações de versão de ferramentas |
TRuleAction |
Enumeração que descreve uma ação de regra, como erro, aviso, informação, oculto ou nenhum |
TIncludeAction |
Enumeração que descreve uma ação de regra, como um erro, aviso, informações, oculto, nenhum ou padrão |
TIncludeAllAction |
Enumeração que descreve uma ação de regra, como um erro, aviso, informação ou oculto |
Para ver um exemplo de um conjunto de regras, consulte Para criar um conjunto de regras em um editor de texto ou qualquer um dos conjuntos de regras padrão armazenados no %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.