缺少代码覆盖率

时间:2017-06-28 16:08:10

标签: fortran code-coverage intel-fortran codecov

我有一个用intel工具链编译的项目。所有.f90文件都编译为bin目录中的相应.o文件。当我使用codecov实用程序时,我得到一个带有覆盖文件列表的HTML。但是,该列表缺少一堆应该有资格获得保险的文件。这些文件中包含的一些模块甚至在运行期间使用。

覆盖率报告中缺少这些文件的原因是什么?

修改

使用调试器运行二进制文件我注意到了一些可能是线索的内容。

如果我尝试在未覆盖的文件中设置断点gdb会引发错误:

No line xxx in file "disturb_coms.f90".

disturb_coms.f90位于bin文件夹中:

manfredo@cave05:build$ ll bin-dbg-A/disturb*
-rw-r--r--  1 manfredo  staff    15K Jun 29 10:41 bin-dbg-A/disturb_coms.f90
-rw-r--r--  1 manfredo  staff   3.9K Jun 29 10:41 bin-dbg-A/disturb_coms.mod
-rw-r--r--  1 manfredo  staff   4.9K Jun 29 10:41 bin-dbg-A/disturb_coms.o
-rw-r--r--  1 manfredo  staff   221K Jun 29 10:43 bin-dbg-A/disturbance.f90
-rw-r--r--  1 manfredo  staff   4.1M Jun 29 10:43 bin-dbg-A/disturbance.o
-rw-r--r--  1 manfredo  staff   3.2M Jun 29 10:43 bin-dbg-A/disturbance_utils.mod

并编译为:

ifort -c -FR -CB -O0 -check -g -prof-gen=srcpos -debug full -debug-parameters all -fpe0 -traceback -ftrapuv -fp-stack-check -implicitnone -assume byterecl -warn unused -warn uncalled -warn usage -gen-interfaces -I../../src/include -I/usr/local/hdf5_mio/include disturb_coms.f90

此外,名为disturbance.f90的文件包含以下行:

module disturbance_utils

   contains

  subroutine apply_disturbances(cgrid)
...  
      use disturb_coms , only : treefall_disturbance_rate ! ! intent(in)
...   
           cpoly%disturbance_rates(2,2,isi) = treefall_disturbance_rate  
...

end subroutine apply_disturbances

end module disturbance_utils

使用disturb_coms,实际涵盖文件干扰。

修改

通过在disturb_coms.f90内添加写入指令并尝试编译,我得到以下错误:

disturb_coms.f90(44): error #6274: This statement must not appear in the specification part of a module.
write(*,*) "try"
^

我对Fortran没有太多经验,但它看起来好像该模块是一种c等效的头文件。是否还有可能覆盖该文件?就像检查其中包含的定义是否在其他地方使用一样?

0 个答案:

没有答案