Exemplarische Vorgehensweise: Verwenden der statischen Codeanalyse zum Ermitteln von Codefehlern

In dieser exemplarischen Vorgehensweise analysieren Sie ein verwaltetes Projekt mithilfe der Legacycodeanalyse auf Codefehler.

In diesem Artikel erfahren Sie die Schritte zur Verwendung der Legacyanalyse, um Ihre verwalteten .NET-Codeassemblys auf Konformität mit den .NET-Entwurfsrichtlinien zu analysieren.

Erstellen einer Klassenbibliothek

  1. Öffnen Sie Visual Studio, und erstellen Sie ein neues Projekt aus der Vorlage Klassenbibliothek (.NET Framework).

  2. Nennen Sie das Projekt CodeAnalysisManagedDemo.

  3. Nachdem das Projekt erstellt wurde, öffnen Sie die Datei Class1.cs.

  4. Ersetzen Sie den vorhandenen Text in „Class1.cs“ durch den folgenden Code:

    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; } }
        }
    }
    
  5. Speichern Sie die Datei „Class1.cs“.

Analysieren des Projekts auf Codefehler

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

  2. Klicken Sie im Menü Projekt auf Eigenschaften.

    Die Eigenschaftenseite von „CodeAnalysisManagedDemo“ wird angezeigt.

  3. Wählen Sie die Registerkarte Codeanalyse aus.

  4. Stellen Sie sicher, dass im Abschnitt Binäre Analysetools die Option Beim Erstellen ausführen ausgewählt ist.

  5. Wählen Sie in der Dropdownliste Aktive Regeln die Option Alle Microsoft-Regeln aus.

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

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

    Die CodeAnalysisManagedDemo-Projektbuildwarnungen werden in den Fenstern Fehlerliste und Ausgabe angezeigt.

Korrigieren der Codeanalyseprobleme

  1. Wählen Sie im Menü Ansicht die Option Fehlerliste aus.

    Abhängig vom ausgewählten Entwicklerprofil müssen Sie möglicherweise im Menü Ansicht auf Andere Fenster zeigen und dann Fehlerliste auswählen.

  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. Verwenden Sie die folgenden Tipps, um die Warnungen zu korrigieren:

    CA1014: Assemblys mit CLSCompliantAttribute markieren: Fügen Sie den Code [assembly: CLSCompliant(true)] am Ende der Datei „AssemblyInfo.cs“ hinzu.

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

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

    CA1032: Standardausnahmekonstruktoren implementieren: Fügen Sie den Konstruktor protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } der Klassendemo hinzu. Sie müssen auch eine using-Anweisung für System.Runtime.Serialization hinzufügen.

    CA1032: Standardausnahmekonstruktoren implementieren: Fügen Sie den Konstruktor public demo () : base() { } der demo-Klasse hinzu.

    CA1709: Bei Bezeichnern sollte die Groß-/Kleinschreibung beachtet werden: Ändern Sie die Groß-/Kleinschreibung des Namespace testCode in TestCode.

    CA1709: Bei Bezeichnern sollte die Groß-/Kleinschreibung beachtet werden: Ändern Sie den Namen des Members in Demo.

    CA1709: Bei Bezeichnern sollte die Groß-/Kleinschreibung beachtet werden: Ändern Sie den Namen des Members in Item.

    CA1710: Bezeichner sollten ein richtiges Suffix aufweisen: Ändern Sie den Namen der Klasse und ihrer Konstruktoren in DemoException.

    CA2237: ISerializable-Typen mit SerializableAttribute markieren: Fügen Sie das [Serializable ()]-Attribut der demo-Klasse hinzu.

    CA2210: Assemblys müssen gültige starke Namen aufweisen: Signieren Sie „CodeAnalysisManagedDemo“ mit einem Schlüssel mit starkem Namen:

    1. Wählen Sie im Menü Projekt die Option CodeAnalysisManagedDemo-Eigenschaften aus.

      Die Projekteigenschaften werden angezeigt.

    2. Wählen Sie die Registerkarte Signierung aus.

    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 mit starkem Namen erstellen wird geöffnet.

    5. Geben Sie unter Schlüsseldateiname den Namen TestKey ein.

    6. Geben Sie ein Kennwort ein, und wählen Sie dann OK aus.

    7. Wählen Sie im Menü Datei die Option Ausgewählte Elemente speichern aus, und schließen Sie dann die Eigenschaftenseiten.

    Nachdem Sie alle Änderungen vorgenommen haben, sollte die Datei „Class1.cs“ wie folgt aussehen:

    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; } }
        }
    }
    
  5. Erstellen Sie das Projekt neu.

Ausschließen von Codeanalysewarnungen

  1. Führen Sie für jede der verbleibenden Warnungen Folgendes aus:

    1. Wählen Sie die Warnung in der Fehlerliste aus.

    2. Wählen Sie im Kontextmenü die OptionUnterdrücken>In Unterdrückungsdatei aus.

  2. Erstellen Sie das Projekt neu.

    Das Projekt wird ohne Warnungen oder Fehler erstellt.

Codeanalyse für verwalteten Code