Compartilhar via


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:

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

  1. 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.
  2. 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

  1. 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.
  2. Na caixa de diálogo de propriedades do projeto, clique em Análise de Código.
  3. 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).
  4. Selecione Ativar análise de código para C/C++ na compilação.
  5. Em Conjunto de regras, selecione Regras recomendadas do driver da Microsoft. Esta é a regra padrão definida para drivers.
  6. 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

  1. 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.

  2. 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

  1. Navegue até o diretório da configuração e da plataforma de compilação (por exemplo, \\Windows7Release\\x64).
  2. 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

  1. 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.

  2. 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

  1. 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.
  2. Adicione um novo ItemDefinitionGroup> para o compilador <ClCompile>.<
  3. 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>
  1. 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.

Análise de código para avisos de drivers