Demonstra Passo a passo: Analisando código C/C ++ para defeitos
Esta explicação passo a passo demonstra como analisar o código para possíveis defeitos no código C/C ++ usando a ferramenta de análise de código para código C/C ++.
Nesta explicação passo a passo, você depurar o processo de usar a análise de código para analisar seu código C/C ++ para possíveis defeitos no código.
Você irá concluir as seguintes etapas:
Execute análise de código no código nativo.
Analise avisos de defeito do código.
Aviso trate sistema autônomo um erro.
Anote o código-fonte para melhorar a análise de defeito do código.
Pré-requisitos
Visual Studio Team System Development Edition.
Uma cópia do Exemplo de demonstração.
Noções básicas sobre a de C/C ++.
Para executar a análise de código defeito em código nativo
Abra a solução de demonstração no Development Edition.
A solução de demonstração agora preenche O gerenciador de soluções.
Sobre o Compilação menu, clicar Recompilar solução.
A solução baseia-se sem erros ou avisos.
In O gerenciador de soluções, selecionar o projeto CodeDefects.
No menu Project, clique em Properties..
The CodeDefects propriedade Pages caixa de diálogo é exibida.
Clique em Code Analysis.
From a Habilitar análise de código para C/C ++ na lista suspensa, selecionar Sim (/Analyze) e, em seguida, clicar OK.
recompilar projeto CodeDefects.
Código de análise avisos é exibido no Lista de Erros.
Para analisar os avisos de defeito do código de inicialização
Sobre o Modo de exibição menu, clicar Lista de Erros.
Dependendo do analisar desenvolvedor escolheu em Visual Studio 2005 Team System, talvez você tenha que aponte para Outras janelas on the Modo de exibição menu e, em seguida, clicar Lista de Erros.
No erro Lista, clicar duas vezes no seguinte aviso:
Aviso C6230: Conversão implícita entre tipos semanticamente diferentes: usando o HRESULT em um contexto booliano.
The code editor displays the line that caused the warning in the function boolProcessDomain().Este aviso indica que um HRESULT está sendo usado no ' if ' demonstrativo onde um resultado booliano é esperado.
Corrija esse aviso usando a macro teve êxito.Seu código deve parecer semelhante ao seguinte código:
if (SUCCEEDED (ReadUserAccount()) )
No erro Lista, clicar duas vezes no seguinte aviso:
Aviso C6282: Operador incorreto: atribuição de constante no contexto do teste.Foi == pretendido?
Teste de igualdade para corrigir esse aviso.Seu código deve parecer semelhante ao seguinte código:
if ((len == ACCOUNT_DOMAIN_LEN) || (g_userAccount[len] != '\\'))
Para tratar o aviso sistema autônomo erro
No arquivo Bug.cpp, adicione o seguinte #pragma demonstrativo para o início do arquivo para tratar o C6001 aviso sistema autônomo erro:
#pragma warning (error: 6001)
recompilar projeto CodeDefects.
No Lista de erros, C6001 agora aparece sistema autônomo um erro.
Corrija os erros C6001 dois restantes no Lista de erros Inicializandoi e j como 0.
recompilar projeto CodeDefects.
Constrói o projeto sem avisos ou erros.
Para corrigir os avisos de anotação de código fonte no annotation.c
No gerenciador de soluções, selecionar o projeto de anotações.
No menu Project, clique em Properties..
The Páginas de propriedades anotações caixa de diálogo é exibida.
Clique em Code Analysis.
From a Habilitar análise de código para C/C ++ na lista suspensa, selecionar Sim (/Analyze) e, em seguida, clicar OK.
recompilar projeto anotações.
No erro Lista, clicar duas vezes no seguinte aviso:
Aviso C6011: Desreferência ponteiro nulo 'newNode'.
Este aviso indica falha pelo chamador para verificar o valor retornado.Em uma telefonar neste caso, a AllocateNode podem retornar um valor nulo (consulte o arquivo de cabeçalho annotations.h para declaração de função para AllocateNode).
em em aberto o arquivo anotação.c.
Para corrigir esse aviso, use ' if ' demonstrativo para testar o valor retornado.Seu código deve parecer semelhante ao seguinte código:
if (NULL != newNode)
{
newNode->data = value;
newNode->next = 0;
node->next = newNode;
}
recompilar projeto anotações.
Constrói o projeto sem avisos ou erros.
Para usar a anotação de código fonte
Anotar parâmetros formais e retornar o valor da função AddTail usando sistema autônomo condições de pré e pós conforme mostrado neste exemplo:
[returnvalue:SA_Post (Null=SA_Maybe)] LinkedList* AddTail
(
[SA_Pre(Null=SA_Maybe)] LinkedList* node,
int value
)
Reconstrua o projeto de anotações.
No erro Lista, clicar duas vezes no seguinte aviso:
Aviso C6011: Cancelar a referência de ponteiro nulo 'nó'.
Este aviso indica que o nó passado para a função pode ser nulo.
Para corrigir esse aviso, use ' if ' demonstrativo para testar o valor retornado.Seu código deve parecer semelhante ao seguinte código:
. . . LinkedList *newNode = NULL; if (NULL == node) { return NULL; . . . }
Reconstrua o projeto de anotações.
Constrói o projeto sem avisos ou erros.
Consulte também
Tarefas
Demonstra Passo a passo: Analisando código gerenciado para defeitos de código