Como executar a Análise de código para drivers
A Análise de Código para Drivers fornece informações sobre possíveis defeitos no código-fonte. Você pode executar a análise de código manualmente e também pode executar a análise de código automaticamente com cada compilação.
Neste tópico:
- Executando a análise de código
- Exibindo os resultados da análise de código
- Supressão do relatório de defeitos
- Alterando os limites de uso da pilha para aviso C6262 para drivers de modo kernel
- Tópicos relacionados
Importante
A Análise de Código para drivers está disponível no WDK e EWDK do Windows 24H2, mas esteja ciente de que ela está definida para ser desativada em uma data futura.
No futuro, o CodeQL será a principal ferramenta de análise estática para drivers. O CodeQL fornece uma linguagem de consulta poderosa que trata o código como um banco de dados a ser consultado, simplificando a gravação de consultas para comportamentos, padrões e muito mais específicos.
Para obter mais informações sobre como usar o CodeQL, consulte CodeQL e o teste de logotipo de ferramentas estáticas.
Executando a análise de código
Para executar a análise de código no código-fonte do driver manualmente
- No Visual Studio, selecione o arquivo de projeto de driver ou a solução e selecione a configuração do projeto e a plataforma a serem analisadas.
- No menu Analisar ou Compilar , clique em Executar Análise de Código na Solução.
Para executar a análise de código no código-fonte do driver automaticamente com cada compilação
- No Visual Studio, clique com o botão direito do mouse no projeto de driver ou solução no Gerenciador de Soluções e clique em Propriedades.
- Na caixa de diálogo de propriedades do projeto, clique em Análise de Código.
- Na página Análise de Código para Propriedades de C/C++, selecione a configuração do projeto e a plataforma que você deseja analisar (por exemplo, Windows 8 e Win32).
- Selecione Ativar análise de código para C/C++ na compilação.
- Em Conjunto de regras, selecione Regras recomendadas do driver da Microsoft. Esta é a regra padrão definida para drivers.
- No menu Compilar, clique em Compilar Solução.
Exibindo os resultados da análise de código
Se possíveis defeitos forem encontrados no código-fonte, a janela Resultados da Análise de Código exibirá o número de aviso da análise de código e o número da linha no arquivo de origem onde o defeito ocorre.
Para exibir defeitos
Na janela Resultados da Análise de Código, clique no número da linha e uma descrição do defeito será exibida na janela Resultados da Análise de Código.
A janela Código exibe o código-fonte e indica onde o defeito ocorre.
Para saber mais sobre um aviso específico, clique no Aviso na janela Resultados da Análise de Código.
Para exibir o arquivo de log de análise de código associado a uma compilação
- Navegue até o diretório da configuração e da plataforma de compilação (por exemplo,
\\Windows7Release\\x64
). - Se você usar as regras recomendadas, o arquivo de log será chamado
vc.\*codeanalysis.xml
. Se você estiver criando um driver para o Windows Server 2012, esse arquivo será usado para criar o log de verificação de driver.
Supressão do relatório de defeitos
Em alguns casos, convém suprimir o relatório de uma mensagem de aviso específica; Por exemplo, se o aviso for principalmente informativo e você souber a causa do erro.
Para suprimir mensagens de aviso
Para remover uma instância de um defeito relatado, selecione o número da linha e o aviso na janela Resultados da Análise de Código.
Na descrição expandida do aviso, clique em Ações>Suprimir Mensagem>na Origem.
Uma diretiva de aviso pragma com o especificador de supressão suprime o aviso apenas para a linha de código que imediatamente segue a instrução de aviso #pragma.
#pragma warning(suppress: 6014)
Alterando os limites de uso da pilha para aviso C6262 para drivers de modo kernel
No modo de usuário e no código de modo kernel, o espaço de pilha é limitado e a falha em confirmar uma página de pilha causa uma exceção de estouro de pilha. O uso de pilha alta é particularmente uma preocupação no modo kernel porque o espaço total de pilha disponível é de apenas 12 KB. O código do modo kernel deve limitar agressivamente o uso da pilha.
A ferramenta Análise de Código emite o aviso C6262 se mais de 1 KB de espaço de pilha for usado localmente em uma função. Se você quiser investigar funções que podem potencialmente consumir muitos recursos, poderá personalizar ou reduzir o limite de limite de pilha usado pelo C6262. Se você diminuir o limite de limite de pilha, a ferramenta Análise de Código poderá encontrar mais problemas. Em seguida, você pode optar por resolver esses problemas de uso de pilha. Por exemplo, você pode reduzir o limite para 400 bytes, para ver se outras funções estão usando recursos.
Para personalizar o limite de tamanho de pilha para C6262
- Abra o arquivo de projeto (.vcxproj) do Visual Studio para o driver (ou componente) de modo kernel no bloco de notas ou em outro editor de texto.
- Adicione um novo ItemDefinitionGroup> para o compilador <ClCompile>.<
- Adicione o <elemento PREfastAdditionalOptions> e defina os bytes> de tamanho<de pilha. O valor padrão é stacksize1024.
<ItemDefinitionGroup>
<ClCompile>
<!-- Change stack depth for C6262 from 1024 to 400 -->
<PREfastAdditionalOptions>stacksize400</PREfastAdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
Salve o arquivo de projeto. Inicie o Visual Studio, carregue o projeto de driver atualizado e execute a análise de código.
Para reverter para o padrão de 1 KB, desfaça as alterações feitas no arquivo de projeto ou altere o valor do tamanho da pilha para stacksize1024.