Freigeben über


Exemplarische Vorgehensweise: Analysieren von verwaltetem Code auf Codefehler

In dieser exemplarischen Vorgehensweise analysieren Sie mit dem Codeanalysetool ein verwaltetes Projekt, um Codefehler zu ermitteln.

Sie werden Schritt für Schritt durch den Vorgang der Codeanalyse geführt, bei der Sie .NET-Assemblys mit verwaltetem Code im Hinblick auf die Einhaltung der Microsoft .NET Framework-Entwurfsrichtlinien überprüfen.

In dieser exemplarischen Vorgehensweise führen Sie folgende Schritte aus:

  • Analysieren von Codefehlerwarnungen und Beheben der Fehler

Vorbereitungsmaßnahmen

  • Visual Studio Premium.

Erstellen einer Klassenbibliothek

So erstellen Sie eine Klassenbibliothek

  1. Klicken Sie im Menü Datei von Visual Studio auf Neu und dann auf Projekt.

  2. Klicken Sie im Dialogfeld Neues Projekt unter Projekttypen auf Visual C#.

  3. Wählen Sie unter Vorlagen die Option Klassenbibliothek aus.

  4. Geben Sie im Textfeld Name die Zeichenfolge CodeAnalysisManagedDemo ein, und klicken Sie dann auf OK.

  5. Wenn das Projekt erstellt wurde, öffnen Sie die Datei Class1.cs.

  6. Ersetzen Sie den vorhandenen Text in Class1.cs durch folgenden Code:

    //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. Speichern Sie die Datei Class1.cs.

Analysieren des Projekts

So analysieren Sie ein verwaltetes Projekt auf Codefehler

  1. Wählen Sie im Projektmappen-Explorer das Projekt CodeAnalysisManagedDemo aus.

  2. Klicken Sie im Menü Projekt auf Eigenschaften.

    Die Eigenschaftenseite für CodeAnalysisManagedDemo wird angezeigt.

  3. Klicken Sie auf Codeanalyse.

  4. Überprüfen Sie, ob Aktivieren Codeanalyse beim Erstellen aktivieren (definiert CODE_ANALYSIS-Konstante) überprüft werden.

  5. Wählen Sie aus der Dropdownliste Diesen Regelsatz ausführen die Option Alle Microsoft-Regeln aus.

  6. Klicken Sie im Menü Datei auf Ausgewählte Elemente speichern, und schließen Sie dann die Eigenschaftenseiten für ManagedDemo.

  7. Klicken Sie im Menü Erstellen auf ManagedDemo erstellen.

    Die CodeAnalysisManagedDemo-Projekt-Erstellungs Codeanalyse und Warnungen werden in den Fenstern Ausgabe gemeldet.

    Wenn das Fenster CodeanalyseAnalysieren nicht im Menü angezeigt wird, wählen Sie Fenster, und klicken Sie dann wählen Sie Codeanalyse ausaus.

Korrigieren der Codeanalyseprobleme

So korrigieren Sie Verletzungen der Codeanalyseregeln

  1. Klicken Sie im Menü Ansicht auf Fehlerliste.

    Je nach ausgewähltem Entwicklerprofil müssen Sie im Menü Ansicht möglicherweise zuerst auf Weitere Fenster zeigen, bevor Sie auf Fehlerliste klicken können.

  2. Klicken Sie im Projektmappen-Explorer auf Alle Dateien anzeigen.

  3. Erweitern Sie den Knoten Eigenschaften, und öffnen Sie dann die Datei AssemblyInfo.cs.

  4. Korrigieren Sie die den folgenden Warnungen zugrunde liegenden Fehler anhand der Angaben in der folgenden Tabelle:

Warnungen

Fehlerkorrektur

CA1014: Assemblys mit CLSCompliantAttribute markieren: Microsoft.Design: 'demo' sollte mit CLSCompliantAttribute markiert sein, und der Wert sollte True sein.

  1. Fügen Sie der Datei AssemblyInfo.cs den Code usingSystem; hinzu.

  2. Fügen Sie dann am Ende der Datei AssemblyInfo.cs den Code [assembly: CLSCompliant(true)] hinzu.

  3. Erstellen Sie das Projekt neu.

CA1032: Standardausnahmekonstruktoren implementieren: Microsoft.Design: Fügen Sie dieser Klasse den folgenden Konstruktor hinzu: public demo(String)

  • Fügen Sie der Klasse demo den Konstruktor public demo (String s) : base(s) { } hinzu.

CA1032: Standardausnahmekonstruktoren implementieren: Microsoft.Design: Fügen Sie dieser Klasse den folgenden Konstruktor hinzu: public demo(String, Exception)

  • Fügen Sie der Klasse demo den Konstruktor public demo (String s, Exception e) : base(s, e) { } hinzu.

CA1032: Standardausnahmekonstruktoren implementieren: Microsoft.Design: Fügen Sie dieser Klasse den folgenden Konstruktor hinzu: protected demo(SerializationInfo, StreamingContext)

  1. Fügen Sie am Anfang der Datei Class1.cs hinzu den Code using System.Runtime.Serialization; hinzu.

  2. Fügen Sie dann den Konstruktor protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } to the class demo. hinzu.

  3. Erstellen Sie das Projekt neu.

CA1032: Standardausnahmekonstruktoren implementieren: Microsoft.Design: Fügen Sie dieser Klasse den folgenden Konstruktor hinzu: public demo()

  1. Fügen Sie der Klasse demo den Konstructor public demo () : base() { } hinzu.

  2. Erstellen Sie das Projekt neu.

CA1709: Bei Bezeichnern sollte die Groß-/Kleinschreibung beachtet werden: Microsoft.Naming: Korrigieren Sie die Groß-/Kleinschreibung des Namespacenamens 'testCode' in 'TestCode'.

  • Ändern Sie die Schreibweise des Namespacenamens testCode in TestCode.

CA1709: Bei Bezeichnern sollte die Groß-/Kleinschreibung beachtet werden: Microsoft.Naming: Korrigieren Sie die Groß-/Kleinschreibung des Typnamens 'demo' in 'Demo'.

  • Ändern Sie den Namen des Members in Demo.

CA1709: Bei Bezeichnern sollte die Groß-/Kleinschreibung beachtet werden: Microsoft.Naming: Korrigieren Sie die Groß-/Kleinschreibung des Membernamens 'item' in 'Item'.

  • Ändern Sie den Namen des Members in Item.

CA1710: Bezeichner sollten ein richtiges Suffix aufweisen: Microsoft.Naming: Benennen Sie 'testCode.demo' so um, dass die Endung 'Exception' lautet.

  • Ändern Sie den Namen der Klasse und der zugehörigen Konstruktoren in DemoException.

CA2210: Assemblys müssen gültige starke Namen aufweisen: Signieren Sie 'ManagedDemo' mit einem Schlüssel mit starkem Namen.

  1. Klicken Sie im Menü Projekt auf Eigenschaften von ManagedDemo.

    Die Projekteigenschaften werden angezeigt.

  2. Klicken Sie auf Signierung.

  3. Aktivieren Sie das Kontrollkästchen Assembly signieren.

  4. Wählen Sie in der Liste Schlüsseldatei mit starkem Namen auswählen die Option <Neu...> aus.

    Das Dialogfeld Schlüssel für einen starken Namen erstellen wird geöffnet.

  5. Geben Sie im Feld Schlüsseldateiname den Namen TestKey ein.

  6. Geben Sie ein Kennwort ein, und klicken Sie dann auf OK.

  7. Klicken Sie im Menü Datei auf Ausgewählte Elemente speichern, und schließen Sie dann die Eigenschaftenseiten.

  8. Erstellen Sie das Projekt neu.

CA2237: Markieren von ISerializable-Typen mit SerializableAttribute: Microsoft.Usage: Fügen Sie 'demo' [Serializable] hinzu, da dieser Typ ISerializable implementiert.

  1. Fügen Sie der Klasse demo das [Serializable ()]-Attribut hinzu.

  2. Erstellen Sie das Projekt neu.

Nachdem Sie die Änderungen ausgeführt haben, sollte die Datei Class1.cs wie folgt aussehen:

//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; } }
    }
}

Ausschließen von Codeanalysewarnungen

So schließen Sie Codefehlerwarnungen aus

  1. Für jede der verbleibenden Warnungen, gehen Sie wie folgt vor:

    1. Im Fenster Codeanalyse Wählen Sie die Warnung aus.

    2. Wählen Sie Aktionenaus, und wählen Sie Meldung unterdrückenaus, und wählen Sie dann In Projektunterdrückungsdateiaus.

    Weitere Informationen finden Sie unter Gewusst wie: Unterdrücken von Warnungen über das Menüelement.

  2. Erstellen Sie das Projekt neu.

    Das Projekt wird ohne Warnungen oder Fehler erstellt.