Udostępnij za pośrednictwem


Instruktaż: Analizowanie kod C/C++ dla wad

W tym instruktażu przedstawiono sposób analizowania kod C/C++ dla potencjalnych uszkodzeń kodu za pomocą narzędzie do analizy kodu dla kodu c i C++.

W tym instruktażu kroku przez proces przy użyciu analizy kodu do analizy kodu C/C++ dla potencjalnych uszkodzeń kodu.

Będzie wykonać następujące czynności:

  • Uruchomienie analizy kodu w kodzie macierzystym.

  • Analizowanie kodu wady ostrzeżenia.

  • Traktuj ostrzeżenia jako błędy.

  • Dodawanie adnotacji kodu źródłowego do poprawy analizy wady kodu.

Wymagania wstępne

  • Visual Studio Premiumor Visual Studio Ultimate.

  • Kopiuj z Przykładowy pokaz.

  • Podstawową wiedzę c i C++.

Aby uruchomić kod wady analizy na kodu macierzystego

  1. Otwórz roztwór Demo w Visual Studio.

    Roztwór Demo teraz wypełnia Solution Explorer.

  2. Na budować menu, kliknij przycisk Roztwór odbudować.

    Roztwór buduje się bez błędów lub ostrzeżeń.

  3. W Solution Explorer, zaznacz projekt, CodeDefects.

  4. Na Projekt menu, kliknij przycisk Właściwości.

    Stron właściwości CodeDefects jest wyświetlane okno dialogowe.

  5. Kliknij przycisk analizy kodu.

  6. Kliknij przycisk Włączyć analizy kodu C/C++, po kompilacji pole wyboru.

  7. Odbuduj projekt CodeDefects.

    Kod analizy ostrzeżenia są wyświetlane w Listy błędów.

Do analizy kodu wady ostrzeżenia

  1. Na widoku menu, kliknij przycisk Listy błędów.

    W zależności od profilu autora, który został wybrany w Visual Studio, należy wskazać Other Windows na widoku menu, a następnie kliknij przycisk Listy błędów.

  2. W Listy błędów, kliknij dwukrotnie następujące ostrzeżenie:

    Ostrzeżenie C6230: niejawna cast semantycznie różnych typów: przy użyciu HRESULT w kontekście Boolean.

    Edytor kodu wyświetla wiersz, który spowodował ostrzeżenie w funkcji boolProcessDomain().To ostrzeżenie wskazuje, że wartość HRESULT jest używany w instrukcji "if" gdzie jest oczekiwany wynik będący wartością logiczną.

  3. Popraw to ostrzeżenie za pomocą makra powiodło się.Kod powinien wyglądać następujący kod:

    if (SUCCEEDED (ReadUserAccount()) )
    
  4. W Listy błędów, kliknij dwukrotnie następujące ostrzeżenie:

    Ostrzeżenie C6282: nieprawidłowy operator: przypisanie do stałej w kontekście badania.Został == zamierzone?

  5. Badania na równości, aby poprawić to ostrzeżenie.Kod powinno wyglądać podobnie do poniższego kodu:

    if ((len == ACCOUNT_DOMAIN_LEN) || (g_userAccount[len] != '\\'))
    

Aby Traktuj ostrzeżenia jako błędy

  1. Dodać następujący wpis w pliku Bug.cpp #pragma instrukcji na początku pliku, aby traktować ostrzeżenie C6001 jako błąd:

    #pragma warning (error: 6001)
    
  2. Odbuduj projekt CodeDefects.

    W Listy błędów, C6001 jest teraz wyświetlany jako błąd.

  3. Pozostałe dwa błędy C6001 w Listy błędów przez inicjowanie i i j na 0.

  4. Odbuduj projekt CodeDefects.

    Projekt buduje bez żadnych ostrzeżeń lub błędów.

Aby poprawić ostrzeżenia adnotacji kodu źródłowego w annotation.c

  1. W oknie Solution Explorer wybierz projekt adnotacji.

  2. Na Projekt menu, kliknij przycisk Właściwości.

    Stron właściwości adnotacji jest wyświetlane okno dialogowe.

  3. Kliknij przycisk analizy kodu.

  4. Wybierz Włączyć analizy kodu C/C++, po kompilacji pole wyboru.

  5. Odbuduj projekt adnotacji.

  6. W Listy błędów, kliknij dwukrotnie następujące ostrzeżenie:

    Ostrzeżenie C6011: cofając wskaźnik NULL 'newNode'.

    To ostrzeżenie wskazuje brak sprawdzenie wartości zwracanej przez obiekt wywołujący.W tym przypadku wywołanie do AllocateNode może zwrócić wartość NULL (zobacz plik nagłówkowy annotations.h do deklaracji funkcji AllocateNode).

  7. Otwórz plik annotations.cpp.

  8. Aby poprawić to ostrzeżenie, należy użyć instrukcji "if", aby przetestować zwracanej wartości.Kod powinien wyglądać następujący kod:

    if (NULL != newNode)

    {

    newNode->data = value;

    newNode->next = 0;

    node->next = newNode;

    }

  9. Odbuduj projekt adnotacji.

    Projekt buduje bez żadnych ostrzeżeń lub błędów.

Aby użyć adnotacji kodu źródłowego

  1. Dodawanie adnotacji parametrów formalnych i zwraca wartość funkcji AddTail za pomocą warunków zaległe i Post, jak pokazano w poniższym przykładzie:

    [returnvalue:SA_Post (Null=SA_Maybe)] LinkedList* AddTail

    (

        [SA_Pre(Null=SA_Maybe)] LinkedList* node,

        int value

     )

  2. Odbuduj projekt adnotacji.

  3. W Listy błędów, kliknij dwukrotnie następujące ostrzeżenie:

    Ostrzeżenie C6011: cofający odwołanie wskaźnik NULL 'węzła'.

    To ostrzeżenie wskazuje, że węzła przekazanego do funkcji może być zerowy i wskazuje numer wiersza, gdzie został podniesiony ostrzeżenie.

  4. Aby poprawić to ostrzeżenie, należy użyć instrukcji "if", aby przetestować zwracanej wartości.Kod powinien wyglądać następujący kod:

      . . .
      LinkedList *newNode = NULL; 
      if (NULL == node)
      {
           return NULL;
          . . .
      }
    
  5. Odbuduj projekt adnotacji.

    Projekt buduje bez żadnych ostrzeżeń lub błędów.

Zobacz też

Zadania

Instruktaż: Analizowanie kodu zarządzanego kodu wad