Bagikan melalui


Menggunakan Seperangkat Aturan untuk Menentukan Aturan C++ yang Akan Dijalankan

Di Visual Studio, Anda dapat membuat dan memodifikasi seperangkat aturan kustom untuk memenuhi kebutuhan proyek tertentu yang terkait dengan analisis kode. Seperangkat aturan default disimpan di %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.

Visual Studio 2017 versi 15.7 dan yang lebih baru: Anda dapat membuat seperangkat aturan kustom menggunakan editor teks apa pun dan menerapkannya dalam build baris perintah apa pun sistem build yang Anda gunakan. Untuk informasi selengkapnya, lihat /analyze:ruleset .

Untuk membuat seperangkat aturan C++ kustom di Visual Studio, proyek C/C++ harus terbuka di Ide Visual Studio. Anda kemudian membuka seperangkat aturan standar di editor seperangkat aturan lalu menambahkan atau menghapus aturan tertentu dan secara opsional mengubah tindakan yang terjadi saat analisis kode menentukan aturan telah dilanggar.

Untuk membuat seperangkat aturan kustom baru, Anda menyimpannya dengan menggunakan nama file baru. Seperangkat aturan kustom secara otomatis ditetapkan ke proyek.

Untuk membuat aturan kustom dari satu seperangkat aturan yang ada

  1. Di Penjelajah Solusi, buka menu pintasan untuk proyek lalu pilih Properti.

  2. Dalam kotak dialog Halaman Properti, pilih halaman properti Umum Analisis>Kode Properti>Konfigurasi.

  3. Di daftar drop-down Seperangkat Aturan, lakukan salah satu hal berikut ini:

    • Pilih seperangkat aturan yang ingin Anda kustomisasi.

      - atau -

    • Pilih <Telusuri...> untuk menentukan seperangkat aturan yang sudah ada yang tidak ada dalam daftar.

  4. Pilih Buka untuk menampilkan aturan di editor seperangkat aturan.

  1. Di Penjelajah Solusi, buka menu pintasan untuk proyek lalu pilih Properti.

  2. Dalam kotak dialog Halaman Properti, pilih halaman properti Microsoft Analisis> Kode Properti>Konfigurasi.

  3. Di daftar drop-down Aturan Aktif, lakukan salah satu hal berikut ini:

    • Pilih seperangkat aturan yang ingin Anda kustomisasi.

      - atau -

    • Pilih <Telusuri...> untuk menentukan seperangkat aturan yang sudah ada yang tidak ada dalam daftar.

  4. Pilih Buka untuk menampilkan aturan di editor seperangkat aturan.

Untuk mengubah seperangkat aturan di editor seperangkat aturan

  • Untuk mengubah nama tampilan seperangkat aturan, pada menu Tampilan , pilih Jendela Properti. Masukkan nama tampilan dalam kotak Nama . Perhatikan bahwa nama tampilan dapat berbeda dari nama file.

  • Untuk menambahkan semua aturan grup ke seperangkat aturan kustom, pilih kotak centang grup. Untuk menghapus semua aturan grup, kosongkan kotak centang.

  • Untuk menambahkan aturan tertentu ke seperangkat aturan kustom, pilih kotak centang aturan. Untuk menghapus aturan dari seperangkat aturan, kosongkan kotak centang.

  • Untuk mengubah tindakan yang diambil saat aturan dilanggar dalam analisis kode, pilih bidang Tindakan untuk aturan lalu pilih salah satu nilai berikut:

    Peringatan - menghasilkan peringatan.

    Kesalahan - menghasilkan kesalahan.

    Info - menghasilkan pesan.

    Tidak ada - menonaktifkan aturan. Tindakan ini sama dengan menghapus aturan dari seperangkat aturan.

Untuk mengelompokkan, memfilter, atau mengubah bidang di editor seperangkat aturan dengan menggunakan toolbar editor seperangkat aturan

  • Untuk memperluas aturan di semua grup, pilih Perluas Semua.

  • Untuk menciutkan aturan di semua grup, pilih Ciutkan Semua.

  • Untuk mengubah bidang yang aturan dikelompokkan menurut, pilih bidang dari daftar Kelompokkan Menurut . Untuk menampilkan aturan yang dipisahkan grupnya, pilih Tidak Ada>.<

  • Untuk menambahkan atau menghapus bidang dalam kolom aturan, pilih Opsi Kolom.

  • Untuk menyembunyikan aturan yang tidak berlaku untuk solusi saat ini, pilih Sembunyikan aturan yang tidak berlaku untuk solusi saat ini.

  • Untuk beralih antara memperlihatkan dan menyembunyikan aturan yang diberi tindakan Kesalahan, pilih Perlihatkan aturan yang dapat menghasilkan kesalahan Analisis Kode.

  • Untuk beralih antara memperlihatkan dan menyembunyikan aturan yang diberi tindakan Peringatan, pilih Tampilkan aturan yang dapat menghasilkan peringatan Analisis Kode.

  • Untuk beralih antara memperlihatkan dan menyembunyikan aturan yang diberi tindakan Tidak Ada , pilih Perlihatkan aturan yang tidak diaktifkan.

  • Untuk menambahkan atau menghapus seperangkat aturan default Microsoft ke seperangkat aturan saat ini, pilih Tambahkan atau hapus seperangkat aturan turunan.

Untuk membuat seperangkat aturan di editor teks

Anda dapat membuat seperangkat aturan kustom di editor teks, menyimpannya di lokasi mana pun dengan .ruleset ekstensi, dan menerapkannya dengan /analyze:ruleset opsi pengkompilasi.

Contoh berikut menunjukkan file seperangkat aturan dasar yang bisa Anda gunakan sebagai titik awal:

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

Skema ruleset

Skema set aturan berikut menjelaskan skema XML file ruleset. Skema ruleset disimpan di %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Schemas\RuleSet.xsd. Anda dapat menggunakannya untuk menulis set aturan Anda sendiri secara terprogram atau untuk memvalidasi apakah set aturan kustom Anda mematuhi format yang benar. Untuk informasi selengkapnya, lihat Cara: Membuat dokumen XML berdasarkan skema 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>

Detail elemen skema:

Elemen skema Deskripsi
TLocalization Informasi pelokalan termasuk nama file ruleset, deskripsi file ruleset, nama rakitan sumber daya yang berisi sumber daya yang dilokalkan, dan nama dasar sumber daya yang dilokalkan
TRuleHintPaths Jalur file yang digunakan sebagai petunjuk untuk mencari file ruleset
TName Nama file ruleset saat ini
TDescription Deskripsi file ruleset saat ini
TInclude Jalur ke kumpulan aturan yang disertakan dengan tindakan aturan
TIncludeAll Tindakan aturan untuk semua aturan
TRule ID aturan dengan tindakan aturan
TRules Kumpulan satu atau beberapa aturan
TRuleSet Format file ruleset yang terdiri dari informasi pelokalan, jalur petunjuk aturan, menyertakan semua informasi, termasuk informasi, informasi aturan, nama, deskripsi, dan informasi versi alat
TRuleAction Enumerasi yang menjelaskan tindakan aturan seperti kesalahan, peringatan, info, tersembunyi, atau tidak ada
TIncludeAction Enumerasi yang menjelaskan tindakan aturan seperti kesalahan, peringatan, info, tersembunyi, tidak ada, atau default
TIncludeAllAction Enumerasi yang menjelaskan tindakan aturan seperti kesalahan, peringatan, info, atau tersembunyi

Untuk melihat contoh set aturan, lihat Untuk membuat seperangkat aturan di editor teks, atau salah satu aturan default yang disimpan di %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.