Exemplo de demonstração
Este procedimentos a seguir mostram como criar a amostra para Demonstra Passo a passo: Analisando o código C/C++ para defeitos. Os procedimentos de criar:
A Visual Studio solução denominada CppDemo.
Um projeto de biblioteca estática denominada CodeDefects.
Um projeto de biblioteca estática denominada anotações.
Os procedimentos também fornecem o código para os arquivos de cabeçalho e. cpp para as bibliotecas estáticas.
Criar a solução de CppDemo e o projeto de CodeDefects
Clique o arquivo , aponte para novae em seguida, clique em Novo projeto.
No tipos de projeto árvore de lista, se o Visual C++ não é seu idioma padrão no VS expanda Outros idiomas.
Expanda **Visual C++**e em seguida, clique em Geral.
Em modelos de, clique em Projeto vazio.
No nome caixa de texto, digite CodeDefects.
Selecione o Create directory for solution caixa de seleção.
No Nome da solução caixa de texto, digite CppDemo.
Configure o projeto de CodeDefects como uma biblioteca estática
No Solution Explorer, clique com o botão direito CodeDefects e, em seguida, clique em Propriedades.
Expanda Propriedades de configuração e, em seguida, clique em Geral.
No Geral , selecione o texto na coluna ao lado de A extensão de destinoe digite .lib.
Em Padrões de projeto, clique na coluna ao lado de O tipo de configuraçãoe em seguida, clique em Lib estática (. lib).
Adicionar o arquivo de cabeçalho e de origem para o projeto de CodeDefects
No Solution Explorer, expanda CodeDefects, com o botão direito Arquivos de cabeçalho, clique em Adde em seguida, clique em Novo Item.
No Add New Item caixa de diálogo, clique em códigoe em seguida, clique em O arquivo de cabeçalho (. h).
No nome , digite Bug.cpp e, em seguida, clique em Add.
Copie o seguinte código e colá-lo para o Bug.cpp de arquivo na Visual Studio editor.
#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;
No Solution Explorer, clique com o botão direito Arquivos de origem, aponte para novae em seguida, clique em Novo Item.
No Add New Item caixa de diálogo, clique em Arquivo do C++ (CPP)
No nome , digite Bug.cpp e, em seguida, clique em Add.
Copie o seguinte código e cole o arquivo Bug.h do Visual Studio editor.
#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; }
Clique o arquivo menu e clique Salvar tudo.
Adicione o projeto de anotações e configurá-lo como uma biblioteca estática
No Solution Explorer, clique em CppDemo, aponte para Adde em seguida, clique em Novo projeto.
No Add New Project caixa de diálogo, expanda Visual C++, clique em Gerale em seguida, clique em Projeto vazio.
No nome caixa de texto, digite Annotationse em seguida, clique em Add.
No Solution Explorer, clique com o botão direito anotações e, em seguida, clique em Propriedades.
Expanda Propriedades de configuração e, em seguida, clique em Geral.
No Geral , selecione o texto na coluna ao lado de A extensão de destinoe digite .lib.
Em Padrões de projeto, clique na coluna ao lado de O tipo de configuraçãoe em seguida, clique em Lib estática (. lib).
Adicionar o arquivo de cabeçalho e o arquivo de origem para o projeto de anotações
No Solution Explorer, expanda anotações, com o botão direito Arquivos de cabeçalho, clique em Adde em seguida, clique em Novo Item.
No Add New Item caixa de diálogo, clique em O arquivo de cabeçalho (. h).
No nome , digite annotations.h e, em seguida, clique em Add.
Copie o seguinte código e colá-lo para o annotations.h de arquivo na Visual Studio editor.
#include <CodeAnalysis/SourceAnnotations.h> struct LinkedList { struct LinkedList* next; int data; }; typedef struct LinkedList LinkedList; [returnvalue:SA_Post( Null=SA_Maybe )] LinkedList* AllocateNode();
No Solution Explorer, clique com o botão direito Arquivos de origem, aponte para novae em seguida, clique em Novo Item.
No Add New Item caixa de diálogo, clique em código e, em seguida, clique em Arquivo do C++ (CPP)
Na caixa Name, digite annotations.cpp e depois clique em Add.
Copie o seguinte código e colá-lo para o annotations.cpp de arquivo na Visual Studio editor.
#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; }
Clique o arquivo menu e clique Salvar tudo.