Aracılığıyla paylaş


Çalıştırılacak C++ Kurallarını Belirtmek için Kural Kümeleri Kullanma

Visual Studio'da, kod analiziyle ilişkili belirli proje gereksinimlerini karşılamak için özel bir kural kümesi oluşturabilir ve değiştirebilirsiniz. Varsayılan kural kümeleri içinde %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Setsdepolanır.

Visual Studio 2017 sürüm 15.7 ve üzeri: Herhangi bir metin düzenleyicisini kullanarak özel kural kümeleri oluşturabilir ve hangi derleme sistemini kullanıyor olursanız olun bunları komut satırı derlemelerine uygulayabilirsiniz. Daha fazla bilgi için bkz. /analyze:ruleset.

Visual Studio'da özel bir C++ kural kümesi oluşturmak için, Visual Studio IDE'de bir C/C++ projesinin açık olması gerekir. Ardından kural kümesi düzenleyicisinde standart bir kural kümesi açar, ardından belirli kuralları ekler veya kaldırırsınız ve isteğe bağlı olarak kod analizi bir kuralın ihlal edildiğini belirlediğinde gerçekleşen eylemi değiştirirsiniz.

Yeni bir özel kural kümesi oluşturmak için, bunu yeni bir dosya adı kullanarak kaydedersiniz. Özel kural kümesi projeye otomatik olarak atanır.

Var olan tek bir kural kümesinden özel kural oluşturmak için

  1. Çözüm Gezgini'da, projenin kısayol menüsünü açın ve özellikler'i seçin.

  2. Özellik Sayfaları iletişim kutusunda Yapılandırma Özellikleri>Kod Analizi>Genel özellik sayfasını seçin.

  3. Kural Kümesi açılan listesinde aşağıdakilerden birini yapın:

    • Özelleştirmek istediğiniz kural kümesini seçin.

      - veya -

    • Listede olmayan mevcut bir kural kümesini belirtmek için Gözat...> öğesini seçin<.

  4. Kuralları kural kümesi düzenleyicisinde görüntülemek için Aç'ı seçin.

  1. Çözüm Gezgini'da, projenin kısayol menüsünü açın ve özellikler'i seçin.

  2. Özellik Sayfaları iletişim kutusunda Yapılandırma Özellikleri>Kod Analizi>Microsoft özellik sayfasını seçin.

  3. Etkin Kurallar açılan listesinde aşağıdakilerden birini yapın:

    • Özelleştirmek istediğiniz kural kümesini seçin.

      - veya -

    • Listede olmayan mevcut bir kural kümesini belirtmek için Gözat...> öğesini seçin<.

  4. Kuralları kural kümesi düzenleyicisinde görüntülemek için Aç'ı seçin.

Kural kümesi düzenleyicisinde bir kural kümesini değiştirmek için

  • Kural kümesinin görünen adını değiştirmek için Görünüm menüsünde Özellikler Penceresi'ni seçin. Ad kutusuna görünen adı girin. Görünen adın dosya adından farklı olabileceğine dikkat edin.

  • Grubun tüm kurallarını özel bir kural kümesine eklemek için grubun onay kutusunu seçin. Grubun tüm kurallarını kaldırmak için onay kutusunun işaretini kaldırın.

  • Özel kural kümesine belirli bir kural eklemek için kuralın onay kutusunu seçin. Kuralı kural kümesinden kaldırmak için onay kutusunu temizleyin.

  • Kod analizinde bir kural ihlal edildiğinde gerçekleştirilen eylemi değiştirmek için kural için Eylem alanını seçin ve ardından aşağıdaki değerlerden birini seçin:

    Uyarı - bir uyarı oluşturur.

    Error - Bir hata oluşturur.

    Bilgi - bir ileti oluşturur.

    Hiçbiri - kuralı devre dışı bırakır. Bu eylem, kuralı kural kümesinden kaldırmakla aynıdır.

Kural kümesi düzenleyicisi araç çubuğunu kullanarak kural kümesi düzenleyicisindeki alanları gruplandırmak, filtrelemek veya değiştirmek için

  • Tüm gruplardaki kuralları genişletmek için Tümünü Genişlet'i seçin.

  • Tüm gruplardaki kuralları daraltmak için Tümünü Daralt'ı seçin.

  • Kuralların gruplandırdığı alanı değiştirmek için Gruplandır listesinden alanı seçin. Kuralları gruplandırılmamış olarak görüntülemek için Yok'u> seçin<.

  • Kural sütunlarında alan eklemek veya kaldırmak için Sütun Seçenekleri'ni seçin.

  • Geçerli çözüme uygulanmayan kuralları gizlemek için Geçerli çözüme uygulanmayan kuralları gizle'yi seçin.

  • Hata eylemine atanan kuralları gösterme ve gizleme arasında geçiş yapmak için Kod Analizi hataları oluşturabilen kuralları göster'i seçin.

  • Uyarı eylemine atanan kuralları gösterme ve gizleme arasında geçiş yapmak için Kod Analizi uyarıları oluşturabilen kuralları göster'i seçin.

  • Hiçbiri eylemine atanan kuralları gösterme ve gizleme arasında geçiş yapmak için Etkin olmayan kuralları göster'i seçin.

  • Microsoft varsayılan kural kümelerini geçerli kural kümesine eklemek veya kaldırmak için Alt kural kümesi ekle veya kaldır'ı seçin.

Metin düzenleyicisinde kural kümesi oluşturmak için

Metin düzenleyicisinde özel bir kural kümesi oluşturabilir, uzantılı herhangi bir .ruleset konumda depolayabilir ve derleyici seçeneğiyle /analyze:ruleset uygulayabilirsiniz.

Aşağıdaki örnekte, başlangıç noktası olarak kullanabileceğiniz temel bir kural kümesi dosyası gösterilmektedir:

<?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>

Kural kümesi şeması

Aşağıdaki kural kümesi şeması, bir kural kümesi dosyasının XML şemasını açıklar. Kural kümesi şeması içinde %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Schemas\RuleSet.xsddepolanır. Bunu kullanarak kendi kural kümelerinizi program aracılığıyla yazabilir veya özel kural kümelerinizin doğru biçime uygun olup olmadığını doğrulayabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: XSD şemasını temel alan XML belgesi oluşturma.

<?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>

Şema öğesi ayrıntıları:

Şema öğesi Açıklama
TLocalization Kural kümesi dosyasının adı, kural kümesi dosyasının açıklaması, yerelleştirilmiş kaynağı içeren kaynak derlemesinin adı ve yerelleştirilmiş kaynağın temel adı gibi yerelleştirme bilgileri
TRuleHintPaths Kural kümesi dosyalarını aramak için ipucu olarak kullanılan dosya yolları
TName Geçerli kural kümesi dosyasının adı
TDescription Geçerli kural kümesi dosyasının açıklaması
TInclude Kural eylemiyle birlikte eklenen bir kural kümesinin yolu
TIncludeAll Tüm kurallar için kural eylemi
TRule Kural eylemiyle kural kimliği
TRules Bir veya daha fazla kural koleksiyonu
TRuleSet Yerelleştirme bilgilerinden, kural ipucu yollarından oluşan kural kümesi dosya biçimi, tüm bilgileri içerir, bilgileri, kural bilgilerini, adı, açıklamasını ve araç sürüm bilgilerini içerir
TRuleAction Hata, uyarı, bilgi, gizli veya hiçbiri gibi bir kural eylemini açıklayan numaralandırma
TIncludeAction Hata, uyarı, bilgi, gizli, yok veya varsayılan gibi bir kural eylemini açıklayan numaralandırma
TIncludeAllAction Hata, uyarı, bilgi veya gizli gibi bir kural eylemini açıklayan numaralandırma

Bir kural kümesinin örneğini görmek için bkz . Metin düzenleyicisinde veya içinde %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Setsdepolanan varsayılan kural kümelerinden herhangi birinde kural kümesi oluşturmak için.