Sdílet prostřednictvím


Návod: Analýza spravovaného kódu na výskyt závad v kódu

V tomto návodu budete analyzovat spravovaný projekt z pohledu chyb v kódu pomocí nástroje pro analýzu kódu.

Tento návod Vás provede skrz proces použití analýzy kódu pro analýzu sestavení spravovaného kódu technologie .NET z pohledu schody s pokyny pro návrh technologie .NET Framework společnosti Microsoft.

V tomto návodu provedete:

  • Analýzu a opravu upozornění na vadu v kódu.

Požadavky

  • Visual Studio Premium.

Vytvoření knihovny tříd

Vytvoření knihovny tříd

  1. V nabídce Soubor sady Visual Studio klikněte na položku Nový a následně na položku Projekt.

  2. V dialogovém okně Nový projekt klikněte v seznamu Typy projektů na položku Visual C#.

  3. V podokně Šablony vyberte položku Knihovna tříd.

  4. Do textového pole Název zadejte CodeAnalysisManagedDemo a poté klikněte na tlačítko OK.

  5. Po vytvoření projektu, otevřete soubor Class1.cs.

  6. Nahraďte existující text v souboru Class1.cs následujícím kódem:

    //CodeAnalysisManagedDemo
    //Class1.cs
    using System;
    namespace testCode
    {
        
        public class demo : Exception
        {
            
            public static void Initialize(int size) { }
            protected static readonly int _item;
            public static int item { get { return _item; } }
        }
    }
  7. Soubor Class1.cs uložte.

Analýza projektu

Analýza spravovaného projektu z pohledu chyb v kódu

  1. V podokně Průzkumník řešenívyberte projekt CodeAnalysisManagedDemo.

  2. V nabídce Projekt klikněte na Vlastnosti.

    Zobrazí se stránka vlastností projektu CodeAnalysisManagedDemo.

  3. Klikněte na položky Kód a Analýza.

  4. Ujistěte se, že je zaškrtnuto zaškrtávací políčko PovolitAnalýza kódu při sestavení(definuje konstantu CODE_ANALYSIS).

  5. V rozevíracím seznamu Spustit tuto sadu pravidel vyberte položku Všechna pravidla společnosti Microsoft.

  6. V nabídce Soubor klikněte na položku Uložit vybrané položky a poté stránku vlastností projektu ManagedDemo zavřete.

  7. V nabídce Sestavení klikněte na položku Sestavit projekt ManagedDemo.

    Upozornění během sestavení projektu CodeAnalysisManagedDemo jsou zobrazeny v podoknech Analýza kódu a Výstup.

    Pokud se okno Analýza kódu nezobrazí, v nabídce Analyzovat vyberte klikněte na položku Windows a následně vyberte položku Analýza kódu.

Oprava problémů analýzy kódu

Oprava porušení pravidel analýzy kódu

  1. V nabídce Zobrazit klikněte na položku Seznam chyb.

    V závislosti na zvoleném vývojovém profilu bude možná potřeba najet myší na položku Další okna v nabídce Zobrazení a následně kliknout na položku Seznam chyb.

  2. V podokně Prohlížeč řešení klikněte na položku Zobrazit všechny filtry.

  3. Dále, rozbalte uzel Vlastnosti a následně otevřete soubor AssemblyInfo.cs.

  4. Pro opravu upozornění použijte následující tabulku:

Upozornění

Oprava upozornění

CA1014: Označte sestavení pomocí atributu CLSCompliantAttribute: Microsoft.Design: Třída "demo" by měla být označena atributem CLSCompliantAttribute s hodnotou true.

  1. Do souboru AssemblyInfo.cs přidejte usingSystem;.

  2. Dále na konec souboru AssemblyInfo.cs přidejte [assembly: CLSCompliant(true)].

  3. Projekt opět sestavte.

CA1032: Implementujte standardní konstruktory výjimky: Microsoft.Design: Přidejte této třídě konstruktor: public demo(String).

  • Do třídy demo přidejte konstruktor public demo (String s) : base(s) { }.

CA1032: Implementujte standardní konstruktory výjimky: Microsoft.Design: Přidejte této třídě konstruktor: public demo (String, Exception)

  • Do třídy demo přidejte konstruktor public demo (String s, Exception e) : base(s, e) { }.

CA1032: Implementujte standardní konstruktory výjimky: Microsoft.Design: Přidejte této třídě konstruktor: protected demo(SerializationInfo, StreamingContext)

  1. Na začátek souboru Class1.cs přidejte using System.Runtime.Serialization; .

  2. Dále přidejte konstruktor protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } to the class demo.

  3. Projekt opět sestavte.

CA1032: Implementujte standardní konstruktory výjimky: Microsoft.Design: Přidejte této třídě konstruktor: public demo()

  1. Do třídy demo přidejte konstruktor public demo () : base() { }.

  2. Projekt opět sestavte.

CA1709: Malá a velká písmena identifikátorů by měla být použita správně: Microsoft.Naming: Opravte velikosti písmen v názvu oboru názvů "testCode" změnou za "TestCode".

  • Změňte velikosti písmen v názvu oboru názvů testCode na TestCode.

CA1709: Malá a velká písmena identifikátorů by měla být použita správně: Microsoft.Naming: Opravte velikost písmen v názvu typu "demo" záměnou za "Demo".

  • Změňte název členu na Demo.

CA1709: Malá a velká písmena identifikátorů by měla být použita správně: Microsoft.Naming: Opravte velikost písmen v názvu členu "item" záměnou za "Item".

  • Změňte název členu na Item.

CA1710: Identifikátory by měly mít správnou příponu: Microsoft.Naming: Přejmenujte "testCode.demo", aby název končil řetězcem "Exception".

  • Změňte název třídy a jejich konstruktorů na DemoException.

CA2210: Sestavení by měly mít platné silné názvy: Podepište "ManagedDemo" klíčem se silným názvem.

  1. V nabídce Projekt klikněte na položku Vlastnosti ManagedDemo.

    Zobrazí se vlastnosti projektu.

  2. Klikněte na záložku Podepisování.

  3. Označte zaškrtávací políčko Podepsání sestavení.

  4. Ze seznamu Zvolte soubor klíče řetězcových názvů vyberte položku <New…>.

    Zobrazí se dialogové okno Vytvoření klíče se silným názvem.

  5. Do textového pole název souboru klíče napište TestKey.

  6. Zadejte heslo a poté klikněte na tlačítko OK.

  7. V nabídce Soubor klikněte na položku Uložit vybrané položky a poté stránku s vlastnostmi zavřete.

  8. Projekt opět sestavte.

CA2237: Označte typy ISerializable pomocí SerializableAttribute: Microsoft.Usage: Jelikož typ "demo" implementuje rozhraní ISerializable, přidejte tomuto typu atribut [Serializable].

  1. Přidejte třídě demo atribut [Serializable ()].

  2. Projekt opět sestavte.

Po dokončení těchto změn by měl soubor Class1.cs vypadat následovně:

//CodeAnalysisManagedDemo
//Class1.cs
using System;
using System.Runtime.Serialization;


namespace TestCode
{

    [Serializable()] 
    public class DemoException : Exception
    {
        public DemoException () : base() { }
        public DemoException(String s) : base(s) { }
        public DemoException(String s, Exception e) : base(s, e) { }
        protected DemoException(SerializationInfo info, StreamingContext context) : base(info, context) { }

        public static void Initialize(int size) { }
        protected static readonly int _item;
        public static int Item { get { return _item; } }
    }
}

Vyloučení upozornění analýzy kódu

Vyloučení upozornění na vadu kódu

  1. Pro každé následující upozornění proveďte následující:

    1. V okně Analýza kódu vyberte upozornění.

    2. Klikněte na položku Akce, následně na položku Potlačit zprávy a nakonec na položku V souboru potlačení projektu.

    Další informace získáte v tématu Postupy: Potlačení upozornění použitím položky nabídky

  2. Projekt opět sestavte.

    Projekt se sestaví bez jakýchkoli upozornění nebo chyb.