es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo excluir directorios de prueba de la cobertura con Meson?

Me gustaría saber si hay una manera de especificar que queremos excluir todos los directorios */tests/* de las rutas exploradas para la cobertura en meson.build.

Realizar análisis de cobertura sobre los propios archivos de prueba es bastante confuso porque en su mayoría están cubiertos al 100% y si tienes muchos de ellos, oculta la tasa de cobertura real de tu código real. Por lo tanto, realmente me gustaría evitar contar los propios archivos de prueba.

Ya conozco este problema en github (yo mismo publiqué allí hace mucho tiempo), pero me gustaría saber si la gente ha comenzado a desarrollar soluciones alternativas para esto.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay una forma de excluir directorios del análisis de cobertura de código en meson.build. Puedes usar la opción coverage_args en la función project() para pasar argumentos a la herramienta de cobertura que se esté utilizando.

    Para excluir todos los directorios */tests/*, puedes usar la opción --exclude seguida del patrón de ruta del directorio. Por ejemplo, --exclude=*/tests/*.

    Aquí tienes un ejemplo de archivo meson.build:

    project('mi_proyecto', 'c')
    
    # Configurar opciones de cobertura
    coverage_args = ['--gcov-tool', 'gcov', '--exclude=*/tests/*'] # agrega cualquier otra opción que necesites
    
    # Agrega tus archivos fuente
    mi_src = ['src/foo.c', 'src/bar.c']
    
    # Crea un ejecutable
    mi_exe = executable('mi_exe', mi_src, 
        # pasa coverage_args al enlazador
        link_args : coverage_args,
        # pasa coverage_args al compilador
        c_args : coverage_args
    )
    

    En este ejemplo, las opciones link_args y c_args pasan coverage_args al enlazador y al compilador, respectivamente. La opción --gcov-tool especifica la herramienta de cobertura que se está utilizando (gcov en este caso). La opción --exclude especifica el patrón de ruta a excluir.

    Nota: La documentación de meson recomienda usar la herramienta ninja para generar los archivos de construcción, ya que ofrece una mayor flexibilidad para personalización. Por lo tanto, esta respuesta asume que estás utilizando ninja como tu herramienta de construcción.

Comments are closed.