Przykładowy pokaz
Następujące procedury pokazują jak utworzyć próbkę dla Instruktaż: Analizowanie kod C/C++ dla wad.Procedury tworzą:
Rozwiązanie Visual Studio o nazwie CppDemo.
Bibliotekę statyczną projektu o nazwie CodeDefects.
Bibliotekę statyczną projektu o nazwie Annotations.
Procedury zapewniają także kod nagłówka i pliku cpp dla bibliotek statycznych.
Stwórz rozwiązanie CppDemo i projekt CodeDefects
Kliknij Plik menu, wskaż Nowy, a następnie kliknij przycisk Nowy projekt.
W drzewie Typy projektów, jeśli Visual C++, nie jest językiem domyślnym w VS rozwiń węzeł Inne języki.
Rozwiń Visual C++, a następnie kliknij przycisk Ogólne.
W Szablony, kliknij Pusty projekt.
W polu tekstowym Nazwa, wpisz CodeDefects.
Wybierz pole wyboru Utwórz katalog rozwiązania.
W polu tekstowym Nazwa rozwiązania wpisz CppDemo.
Konfigurowanie projektu CodeDefects jako biblioteki statycznej
W oknie Eksploratora rozwiązania, kliknij prawym przyciskiem myszy na CodeDefects, a następnie kliknij przycisk Właściwości.
Rozwiń Właściwości konfiguracji i kliknij przycisk Ogólne.
W liście Ogólne, zaznacz tekst w kolumnie obok Rozszerzenie docelowe, a następnie wpisz .lib.
W Domyślne ustawienia projektu, kliknij kolumnę Typ konfiguracji, a następnie kliknij przycisk Biblioteka statyczna (lib).
Dodaj nagłówek i plik z kodem źródłowym do projektu CodeDefects
W Eksploratorze rozwiązania rozwiń CodeDefects, kliknij prawym przyciskiem myszy Pliki nagłówków, kliknij Dodaj, a następnie kliknij przycisk Nowy element.
W oknie dialogowym Dodaj nowy element, kliknij Kod, a następnie kliknij przycisk Plik nagłówkowy (h).
W polu Nazwa wpisz Bug.cpp, a następnie kliknij Dodaj.
Skopiuj poniższy kod i wklej go do pliku Bug.cpp w edytorze Visual Studio.
#include <windows.h> // //These 3 functions are consumed by the sample // but are not defined. This project cannot be linked! // bool CheckDomain( LPCSTR ); HRESULT ReadUserAccount(); // //These constants define the common sizes of the // user account information throughout the program // const int USER_ACCOUNT_LEN = 256; const int ACCOUNT_DOMAIN_LEN = 128;
W oknie Eksploratora rozwiązania, kliknij prawym przyciskiem myszy Pliki źródłowe, wskaż Nowy, a następnie kliknij Nowy element.
W oknie dialogowym Dodaj nowy element, kliknij Plik C++ (cpp)
W polu Nazwa wpisz Bug.cpp, a następnie kliknij Dodaj.
Skopiuj poniższy kod i wklej go do pliku Bug.h w edytorze Visual Studio.
#include <stdlib.h> #include "Bug.h" // the user account TCHAR g_userAccount[USER_ACCOUNT_LEN] = ""; int len = 0; bool ProcessDomain() { TCHAR* domain = new TCHAR[ACCOUNT_DOMAIN_LEN]; // ReadUserAccount gets a 'domain\user' input from //the user into the global 'g_userAccount' if (ReadUserAccount() ) { // Copies part of the string prior to the '\' // character onto the 'domain' buffer for( len = 0 ; (len < ACCOUNT_DOMAIN_LEN) && (g_userAccount[len] != '\0') ; len++ ) { if ( g_userAccount[len] == '\\' ) { // Stops copying on the domain and user separator ('\') break; } domain[len] = g_userAccount[len]; } if((len= ACCOUNT_DOMAIN_LEN) || (g_userAccount[len] != '\\')) { // '\' was not found. Invalid domain\user string. delete [] domain; return false; } else { domain[len]='\0'; } // Process domain string bool result = CheckDomain( domain ); delete[] domain; return result; } return false; } int path_dependent(int n) { int i; int j; if (n == 0) i = 1; else j = 1; return i+j; }
Kliknij menu Plik, a następnie kliknij Zapisz wszystkie.
Dodaj projekt Annotations i skonfiguruj go jako bibliotekę statyczną
W Eksploratorze rozwiązania kliknij CppDemo, wskaż Dodaj, a następnie kliknij przycisk Nowy projekt.
W oknie dialogowym Dodaj nowy projekt, rozwiń opcję Visual C++ kliknij Ogólne, a następnie kliknij przycisk Pusty projekt.
W polu tekstowym Nazwa wpisz Annotations, a następnie kliknij przycisk Dodaj.
W Eksploratorze rozwiązania, kliknij prawym przyciskiem myszy Annotations, a następnie kliknij przycisk Właściwości.
Rozwiń Właściwości konfiguracji i kliknij przycisk Ogólne.
W liście Ogólne, zaznacz tekst w kolumnie obok Rozszerzenie docelowe, a następnie wpisz .lib.
W Domyślne ustawienia projektu, kliknij kolumnę Typ konfiguracji, a następnie kliknij przycisk Biblioteka statyczna (lib).
Dodaj nagłówek pliku i plik źródłowego do projektu Annotations
W Eksploratorze rozwiązania rozwiń Annotations, kliknij prawym przyciskiem myszy Pliki nagłówkowe, kliknij Dodaj, a następnie kliknij przycisk Nowy element.
W oknie dialogowym Dodaj nowy element, kliknij przycisk Plik nagłówkowy (h).
W polu Nazwa wpisz annotations.h, a następnie kliknij przycisk Dodaj.
Skopiuj poniższy kod i wklej go do annotations.h pliku w edytorze Visual Studio.
#include <CodeAnalysis/SourceAnnotations.h> struct LinkedList { struct LinkedList* next; int data; }; typedef struct LinkedList LinkedList; [returnvalue:SA_Post( Null=SA_Maybe )] LinkedList* AllocateNode();
W oknie Eksploratora rozwiązania, kliknij prawym przyciskiem myszy Pliki źródłowe, wskaż Nowy, a następnie kliknij Nowy element.
W oknie dialogowym Dodaj nowy element, kliknij przycisk Kod i kliknij Plik C++ (cpp)
W polu Nazwa wpisz annotations.cpp , a następnie kliknij Dodaj.
Skopiuj poniższy kod i wklej go do pliku annotations.cpp w edytorze Visual Studio.
#include <CodeAnalysis/SourceAnnotations.h> #include <windows.h> #include <stdlib.h> #include "annotations.h" LinkedList* AddTail( LinkedList *node, int value ) { LinkedList *newNode = NULL; // finds the last node while ( node->next != NULL ) { node = node->next; } // appends the new node newNode = AllocateNode(); newNode->data = value; newNode->next = 0; node->next = newNode; return newNode; }
Kliknij menu Plik, a następnie kliknij Zapisz wszystkie.