Určení pravidel C++, která se mají spustit, pomocí sad pravidel
V sadě Visual Studio můžete vytvořit a upravit vlastní sadu pravidel tak, aby vyhovovala konkrétním potřebám projektu přidruženým k analýze kódu. Výchozí sady pravidel jsou uloženy v %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets
souboru .
Visual Studio 2017 verze 15.7 a novější: Vlastní sady pravidel můžete vytvořit pomocí libovolného textového editoru a použít je v buildech příkazového řádku bez ohledu na to, jaký systém sestavení používáte. Další informace najdete na webu /analyze:ruleset
.
Pokud chcete vytvořit vlastní sadu pravidel C++ v sadě Visual Studio, musí být projekt C/C++ otevřený v integrovaném vývojovém prostředí sady Visual Studio. Pak otevřete standardní sadu pravidel v editoru sad pravidel a pak přidáte nebo odeberete konkrétní pravidla a volitelně změníte akci, která nastane, když analýza kódu zjistí, že pravidlo bylo porušeno.
Pokud chcete vytvořit novou vlastní sadu pravidel, uložte ji pomocí nového názvu souboru. Vlastní sada pravidel je automaticky přiřazena k projektu.
Vytvoření vlastního pravidla z jedné existující sady pravidel
V Průzkumník řešení otevřete místní nabídku projektu a pak zvolte Vlastnosti.
V dialogovém okně Stránky vlastností vyberte >stránku vlastností vlastnosti Obecné analýzy kódu konfigurace.>
V rozevíracím seznamu Sada pravidel proveďte jednu z následujících věcí:
Zvolte sadu pravidel, kterou chcete přizpůsobit.
- nebo -
Zvolte <Procházet...> a zadejte existující sadu pravidel, která není v seznamu.
Zvolte Otevřít a zobrazte pravidla v editoru sad pravidel.
V Průzkumník řešení otevřete místní nabídku projektu a pak zvolte Vlastnosti.
V dialogovém okně Stránky vlastností vyberte stránku vlastností Microsoftu pro analýzu> vlastností vlastností konfigurace.>
V rozevíracím seznamu Aktivní pravidla proveďte jednu z následujících věcí:
Zvolte sadu pravidel, kterou chcete přizpůsobit.
- nebo -
Zvolte <Procházet...> a zadejte existující sadu pravidel, která není v seznamu.
Zvolte Otevřít a zobrazte pravidla v editoru sad pravidel.
Úprava sady pravidel v editoru sad pravidel
Pokud chcete změnit zobrazovaný název sady pravidel, zvolte v nabídce Zobrazení okno Vlastnosti. Do pole Název zadejte zobrazovaný název. Všimněte si, že zobrazovaný název se může lišit od názvu souboru.
Pokud chcete přidat všechna pravidla skupiny do vlastní sady pravidel, zaškrtněte políčko skupiny. Pokud chcete odebrat všechna pravidla skupiny, zrušte zaškrtnutí políčka.
Pokud chcete přidat konkrétní pravidlo do vlastní sady pravidel, zaškrtněte políčko pravidla. Pokud chcete pravidlo ze sady pravidel odebrat, zrušte zaškrtnutí políčka.
Pokud chcete změnit akci prováděnou při porušení pravidla v analýze kódu, zvolte pole Akce pravidla a pak zvolte jednu z následujících hodnot:
Upozornění – vygeneruje upozornění.
Chyba – vygeneruje chybu.
Informace – vygeneruje zprávu.
Žádné – zakáže pravidlo. Tato akce je stejná jako odebrání pravidla ze sady pravidel.
Seskupení, filtrování nebo změna polí v editoru sad pravidel pomocí panelu nástrojů editoru sad pravidel
Chcete-li rozbalit pravidla ve všech skupinách, zvolte Rozbalit vše.
Chcete-li sbalit pravidla ve všech skupinách, zvolte Sbalit vše.
Chcete-li změnit pole, podle kterého jsou pravidla seskupována, zvolte pole ze seznamu Seskupit podle . Pokud chcete zobrazit neseskupené pravidla, zvolte <Žádné>.
Pokud chcete přidat nebo odebrat pole ve sloupcích pravidel, zvolte Možnosti sloupce.
Pokud chcete skrýt pravidla, která se nevztahují na aktuální řešení, zvolte Skrýt pravidla, která se nevztahují na aktuální řešení.
Pokud chcete přepnout mezi zobrazením a skrytím pravidel přiřazených akcí Chyba, zvolte Zobrazit pravidla, která můžou generovat chyby analýzy kódu.
Pokud chcete přepnout mezi zobrazením a skrytím pravidel přiřazených akcí Upozornění, zvolte Zobrazit pravidla, která můžou generovat upozornění analýzy kódu.
Pokud chcete přepnout mezi zobrazením a skrytím pravidel přiřazených akcí Žádná , zvolte Zobrazit pravidla, která nejsou povolená.
Pokud chcete přidat nebo odebrat výchozí sady pravidel Microsoftu do aktuální sady pravidel, zvolte Přidat nebo odebrat podřízené sady pravidel.
Vytvoření sady pravidel v textovém editoru
V textovém editoru můžete vytvořit vlastní sadu pravidel, uložit ji do libovolného umístění s příponou .ruleset
a použít ji s možností kompilátoru /analyze:ruleset
.
Následující příklad ukazuje základní soubor sady pravidel, který můžete použít jako výchozí bod:
<?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>
Schéma sady pravidel
Následující schéma sady pravidel popisuje schéma XML souboru sady pravidel. Schéma sady pravidel je uloženo v %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Schemas\RuleSet.xsd
souboru . Můžete ho použít k vytváření vlastních sad pravidel prostřednictvím kódu programu nebo k ověření, jestli vaše vlastní sady pravidel dodržují správný formát. Další informace naleznete v tématu Postupy: Vytvoření dokumentu XML na základě schématu 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>
Podrobnosti o elementu schématu:
Prvek schématu | Popis |
---|---|
TLocalization |
Informace o lokalizaci, včetně názvu souboru sady pravidel, popisu souboru sady pravidel, názvu sestavení prostředku obsahujícího lokalizovaný prostředek a základního názvu lokalizovaného prostředku |
TRuleHintPaths |
Cesty k souborům používaným jako nápovědy k hledání souborů sady pravidel |
TName |
Název aktuálního souboru sady pravidel |
TDescription |
Popis aktuálního souboru sady pravidel |
TInclude |
Cesta k zahrnuté sadě pravidel s akcí pravidla |
TIncludeAll |
Akce pravidla pro všechna pravidla |
TRule |
ID pravidla s akcí pravidla |
TRules |
Kolekce jednoho nebo více pravidel |
TRuleSet |
Formát souboru sady pravidel skládající se z lokalizačních informací, cest nápovědy k pravidlům, včetně informací, informací o pravidlech, názvu, popisu a informací o verzi nástrojů |
TRuleAction |
Výčet popisující akci pravidla, jako je chyba, upozornění, informace, skryté nebo žádné |
TIncludeAction |
Výčet popisující akci pravidla, jako je chyba, upozornění, informace, skryté, žádné nebo výchozí |
TIncludeAllAction |
Výčet popisující akci pravidla, jako je chyba, upozornění, informace nebo skryté |
Pokud chcete zobrazit příklad sady pravidel, přečtěte si téma Vytvoření sady pravidel v textovém editoru nebo některé z výchozích sad pravidel uložených v %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets
.