Compartir a través de


Solucionar problemas de cobertura de código

La herramienta de análisis de cobertura de código en Visual Studio recopila datos de código y ensamblados administrados (archivos .dll o .exe).Sin embargo, en algunos casos, la ventana de resultados de cobertura de código muestra un error similar a “los resultados vacíos generados: ….” Hay varias razones posibles por las que esto puede suceder.Este tema está diseñado para ayudar a resolver estos problemas.

Qué debe ver

Si se elige un comando de Analizar cobertura de código en el menú de pruebas y si la compilación y las pruebas se ejecutan correctamente, debe verse una lista de resultados en la ventana de cobertura de código.Es posible que tenga que expandir elementos para ver los detalles.

Resultados de cobertura de código con colores

Para obtener más información, vea Usar cobertura de código para determinar la cantidad de código que se está probando.

Causas posibles de no ver ningún resultado

JJ159523.collapse_all(es-es,VS.110).gifNo se ejecutó ninguna prueba

  • Análisis
    Compruebe la ventana de salida.En la lista desplegable Mostrar resultados desde, elija Pruebas.Compruebe si hay advertencias o errores registrados.

  • Explicación
    Se realiza el análisis de cobertura de código mientras se ejecutan las pruebas.Incluye sólo los ensamblados cargados en memoria cuando se ejecutan las pruebas.Si no se ejecuta ninguna de las pruebas, no hay nada que reportar para cobertura de código.

  • Solución
    En el Explorador de pruebas, elija Ejecutar todas para comprobar que las pruebas se ejecuten correctamente.Corrija cualquier error antes de utilizar Analizar cobertura de código.

JJ159523.collapse_all(es-es,VS.110).gifLos archivos .pdb (símbolo) no están disponibles

  • Análisis
    Abra la carpeta de destino de la compilación (normalmente bin\debug) y compruebe que para cada ensamblado, hay un archivo .pdb en el mismo directorio que el archivo .dll o .exe.

  • Explicación
    El motor de cobertura de código requiere que cada ensamblado tenga su archivo .pdb asociado, que es accesible durante la ejecución de pruebas.Si no hay ningún archivo .pdb para un ensamblado determinado, no se analizará.

    El archivo .pdb se debe generar de la misma compilación que los archivos .dll o .exe.

  • Solución
    Asegúrese de que las configuraciones de compilación generan el archivo .pdb.Si los archivos .pdb no se actualizan cuando se compila el proyecto, abra las propiedades del proyecto, seleccione la página Compilación, elija Avanzado y revise Información de depuración.

    Si los archivos .pdb y .dll o .exe están en distintos lugares, copie el archivo .pdb en el mismo directorio.También es posible configurar el motor de cobertura de código para que busque archivos .pdb en otra ubicación.Para obtener más información, vea Personalizar el análisis de cobertura de código.

JJ159523.collapse_all(es-es,VS.110).gifUsar un binario instrumentado u optimizado

  • Análisis
    Determinar si el binario ha experimentado algún tipo de optimización avanzada, como la optimización guiada de perfiles, o si ha sido instrumentado por una herramienta de generación de perfiles como vsinstr.exe o vsperfmon.exe.

  • Explicación
    Si otra herramienta de generación de perfiles ha instrumentado o ha optimizado un ensamblado, el ensamblado se omitirá del análisis de cobertura de código.

    El análisis de cobertura de código no se puede realizar en dichos ensamblados.

  • Solución
    Desactive la optimización y utilice una nueva compilación.

JJ159523.collapse_all(es-es,VS.110).gifEl código no está administrado (.NET) o no es código nativo (C++)

  • Análisis
    Compruebe que se están ejecutando algunas pruebas en código administrado o de C++.

  • Explicación
    El análisis de cobertura de código en Visual Studio sólo está disponible en código administrado y código nativo (C++).Si trabaja con herramientas de otros fabricantes, puede que parte, o todo el código, se ejecute en una plataforma diferente.

  • Solución
    Ninguno disponible.

JJ159523.collapse_all(es-es,VS.110).gifNGen ha instalado el ensamblado

  • Análisis
    Compruebe que el ensamblado no sea cargado desde la caché de imágenes nativas.

  • Explicación
    Por razones de rendimiento, no se analizan ensamblados nativos de la imagen.Para obtener más información, vea Ngen.exe (Generador de imágenes nativas).

  • Solución
    Utilice una versión MSIL del ensamblado.No lo procese con NGen.

JJ159523.collapse_all(es-es,VS.110).gifArchivo .runsettings personalizado con sintaxis incorrecta

  • Análisis
    Si utiliza un archivo personalizado de .runsettings, puede que contenga un error de sintaxis.

    Esto da como resultado que no se ejecute ninguna cobertura de código.O bien la ventana de cobertura de código no se abre al final de la ejecución de pruebas o muestra resultados antiguos.

  • Explicación
    Se pueden ejecutar las pruebas unitarias con un archivo .runsettings personalizado para configurar las opciones de cobertura de código.Las opciones le permiten incluir o excluir los archivos.Para obtener más información, vea Personalizar el análisis de cobertura de código.

  • Solución
    Hay dos tipos posibles de errores:

  • Error XML

    Abra el archivo .runsettings en el editor XML de Visual Studio.Busque las indicaciones del error.

  • Error de expresión regular

    Cada cadena en el archivo es una expresión regular.Busque errores en cada uno y, en particular, esté atento a:

    • Paréntesis que no coinciden (...) o paréntesis sin escape \(…\).Si desea emparejar un paréntesis en la cadena de búsqueda, debe omitirlo.Por ejemplo, para coincidir con un uso de la función: .*MyFunction\(double\)

    • Asterisco o signo más al principio de una expresión.Para hacer coincidir cualquier cadena de caracteres, utilice un punto seguido de un asterisco: .*

JJ159523.collapse_all(es-es,VS.110).gifArchivo .runsettings personalizado con exclusiones incorrectas

  • Análisis
    Si utiliza un archivo .runsettings personalizado, asegúrese de que incluya el ensamblado.

  • Explicación
    Se pueden ejecutar las pruebas unitarias con un archivo .runsettings personalizado para configurar las opciones de cobertura de código.Las opciones le permiten incluir o excluir los archivos.Para obtener más información, vea Personalizar el análisis de cobertura de código.

  • Solución
    Elimine todos los nodos Include del archivo .runsettings, y quite todos los nodos Exclude.Si eso corrige el problema, vuelva a ponerlos en fase.

    Asegúrese de que el nodo de DataCollectors especifica la cobertura de código.Compárelo con el ejemplo en Personalizar el análisis de cobertura de código.

Siempre se muestra algún código como no cubierto

JJ159523.collapse_all(es-es,VS.110).gifEl código de inicialización de archivos DLL nativos se ejecuta antes de instrumentación

  • Análisis
    En código nativo vinculado estáticamente, parte de la función de inicialización DllMain y el código al que llama se muestra a veces como no cubierto, aunque se haya ejecutado el código.

  • Explicación
    La herramienta de cobertura de código funciona insertando la instrumentación en un ensamblado justo antes de que la aplicación comience a ejecutarse.En cualquier ensamblado cargado antes de ese momento, el código de inicialización de DllMain se ejecuta tan pronto como se carga el ensamblado y antes de que se ejecute la aplicación.Ése código aparecerá como no cubierto.

    Normalmente, esto se aplica a los ensamblados cargados estáticamente.

  • Solución
    Ninguno.

Vea también

Otros recursos

Usar cobertura de código para determinar la cantidad de código que se está probando