Compartir a través de


Ejecución del análisis de código para controladores

El análisis de código para controladores proporciona información sobre posibles defectos en el código fuente. Puede ejecutar el análisis de código manualmente y también puede ejecutar el análisis de código automáticamente con cada compilación.

En este tema:

Importante

El análisis de código de los controladores está disponible en WDK y EWDK de Windows 24H2, pero tenga en cuenta que está configurado para retirarse en una fecha futura.
En el futuro, CodeQL será la herramienta de análisis estático principal para los controladores. CodeQL proporciona un lenguaje de consulta eficaz que trata el código como una base de datos que se va a consultar, lo que facilita la escritura de consultas para comportamientos, patrones y mucho más específicos. Para obtener más información sobre el uso de CodeQL, consulte CodeQL y la prueba de logotipo de herramientas estáticas.

Ejecutar análisis de código

Para ejecutar el análisis de código en el código fuente del controlador manualmente

  1. En Visual Studio, seleccione el archivo o la solución del proyecto de controlador y seleccione la configuración del proyecto y la plataforma que se van a analizar.
  2. En el menú Analizar o compilar , haga clic en Ejecutar análisis de código en la solución.

Para ejecutar el análisis de código en el código fuente del controlador automáticamente con cada compilación

  1. En Visual Studio, haga clic con el botón derecho en el proyecto o solución del controlador en Explorador de soluciones y haga clic en Propiedades.
  2. En el cuadro de diálogo propiedades del proyecto, haga clic en Análisis de código.
  3. En la página Análisis de código para propiedades de C/C++ , seleccione la configuración del proyecto y la plataforma que quiera analizar (por ejemplo, Windows 8 y Win32).
  4. Seleccione Habilitar análisis de código para C/C++ en Compilación.
  5. En Conjunto de reglas, seleccione Reglas recomendadas del controlador de Microsoft. Este es el conjunto de reglas predeterminado para los controladores.
  6. En el menú Compilar , haga clic en Compilar solución.

Visualización de los resultados del análisis de código

Si se encuentran posibles defectos en el código fuente, la ventana Resultados del análisis de código muestra el número de advertencia de análisis de código y el número de línea en el archivo de origen donde se produce el defecto.

Para ver defectos

  1. En la ventana Resultados del análisis de código, haga clic en el número de línea y se muestra una descripción del defecto en la ventana Resultados del análisis de código.

    La ventana Código muestra el código fuente e indica dónde se produce el defecto.

  2. Para obtener más información sobre una advertencia determinada, haga clic en la advertencia en la ventana Resultados del análisis de código.

Para ver el archivo de registro de análisis de código asociado a una compilación

  1. Vaya al directorio de la configuración y la plataforma de compilación (por ejemplo, \\Windows7Release\\x64).
  2. Si usa las reglas recomendadas, el archivo de registro se denomina vc.\*codeanalysis.xml. Si va a crear un controlador para Windows Server 2012, este archivo se usa para crear el registro de comprobación del controlador.

Suprimir el informe de defectos

En algunos casos, es posible que desee suprimir el informe de un mensaje de advertencia determinado; por ejemplo, si la advertencia es principalmente informativa y sabe la causa del error.

Para suprimir mensajes de advertencia

  1. Para quitar una instancia de un defecto notificado, seleccione el número de línea y la advertencia en la ventana Resultados del análisis de código.

  2. En la descripción expandida de la advertencia, haga clic en Acciones>Suprimir mensaje>en el origen.

    Una directiva de advertencia pragma con el especificador suppress suprime la advertencia solo para la línea de código que sigue inmediatamente a la instrucción de advertencia #pragma.

    #pragma warning(suppress: 6014)
    

Cambio de los límites de uso de la pila para la advertencia C6262 para controladores en modo kernel

En el modo de usuario y el código en modo kernel, el espacio de pila está limitado y si no se confirma una página de pila, se produce una excepción de desbordamiento de pila. El uso elevado de la pila es especialmente importante en el modo kernel porque el espacio total de pila disponible es de solo 12 KB. El código en modo kernel debe limitar agresivamente el uso de la pila.

La herramienta análisis de código emite la advertencia C6262 si se usa localmente más de 1 KB de espacio de pila en una función. Si desea investigar funciones que podrían ser intensivas en recursos, puede personalizar o reducir el límite de umbral de pila usado por C6262. Si reduce el límite de umbral de pila, la herramienta Análisis de código puede encontrar más problemas. A continuación, puede optar por solucionar esos problemas de uso de la pila. Por ejemplo, podría reducir el umbral a 400 bytes para ver si otras funciones usan recursos.

Para personalizar el límite de stacksize para C6262

  1. Abra el archivo de proyecto de Visual Studio (.vcxproj) para el controlador en modo kernel (o componente) en el Bloc de notas u otro editor de texto.
  2. Agregue un nuevo ItemDefinitionGroup> para el compilador <ClCompile>.<
  3. Agregue el elemento PREfastAdditionalOptions> y establezca los bytes> stacksize<.< El valor predeterminado es stacksize1024.
     <ItemDefinitionGroup>
       <ClCompile>


      <!-- Change stack depth for C6262 from 1024 to 400 -->
      <PREfastAdditionalOptions>stacksize400</PREfastAdditionalOptions>

    </ClCompile>
  </ItemDefinitionGroup>
  1. Guarde el archivo de proyecto. Inicie Visual Studio, cargue el proyecto de controlador actualizado y ejecute el análisis de código.

    Para revertir al valor predeterminado de 1 KB, deshaga los cambios realizados en el archivo del proyecto o cambie el valor de tamaño de pila a stacksize1024.

Análisis de código para advertencias de controladores