Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran ifort中一个简单示例的差分代码覆盖率_Fortran_Intel Fortran - Fatal编程技术网

Fortran ifort中一个简单示例的差分代码覆盖率

Fortran ifort中一个简单示例的差分代码覆盖率,fortran,intel-fortran,Fortran,Intel Fortran,我对使用ifort中的差异代码覆盖率功能感兴趣。这个例子似乎彻底解决了这个问题,但我没有把它应用到我简化的例子中。以下是我所拥有的: program test integer :: userinput print *, 'enter 1 or 0' read *, userinput if (userinput.eq.1) then print *, 'You have entered ONE' else print *,

我对使用ifort中的差异代码覆盖率功能感兴趣。这个例子似乎彻底解决了这个问题,但我没有把它应用到我简化的例子中。以下是我所拥有的:

program test
    integer :: userinput
    print *, 'enter 1 or 0'
    read *, userinput

    if (userinput.eq.1) then
        print *, 'You have entered ONE'
    else
        print *, 'You have not entered ONE'
    end if
end program test
可以采用两条路径之一的简单程序。如果用户输入1,则进入If。。。然后语句,如果用户输入0,则它进入else。。。声明

差异代码覆盖率的目标(如英特尔文档所述)如下:

比较应用程序两次运行的配置文件:引用运行 以及一个新运行,标识新运行所覆盖的代码,但 未包含在参考运行中

因此,如果我们使用一个用户输入0的引用运行和一个用户输入1的新运行,差异代码覆盖率应该能够识别新运行覆盖了if语句,而引用运行没有覆盖(引用运行进入else语句)。我尽可能地密切关注文档。源文件名为test.f90。以下是我正在使用的编译行:

ifort test.f90 /Qcov-gen
生成PGOPTI.SPI、PGOPTI、test.exe和test.obj。然后我运行可执行文件并输入0,我会得到正确的消息“You have not enter ONE”。这会导致创建一个.dyn文件(由于使用了Qcov gen选项)。然后,我做以下工作:

profmerge
codecov -prj Project_Name -dpi pgopti.dpi -ref pgopti.dpi
这将生成其他文件pgopti.dpi、pgopti.dpi.lock。在这一点上,我认为我有足够的材料来生成我的参考数据。我尝试使用以下方法:

profmerge
codecov -prj Project_Name -dpi pgopti.dpi -ref pgopti.dpi
它生成的html文件与在Visual Studio for Intel Fortran中运行代码覆盖率时显示的文件类似。我也得到了100%的代码覆盖率,这似乎是不正确的。然后,文档显示以下命令:

codecov -prj Project_Name -spi pgopti.spi -dpi pgopti.dpi 
这似乎不会为新的跑步提供机会


有人能解释一下如何对这个特殊的例子进行简单的差异代码覆盖吗?我最终试图将此推断到一个更大的项目中,但我正在尝试采取一些小步骤来实现这一点。

我可能在您的描述中遗漏了这一点,但您似乎没有提到再次运行程序并输入1,这可能是差速器部件所需的。即使不看文档,我也会觉得
dpi
ref
不应该是同一个文件。。粗略猜测,运行一次,将所有pgopti.*复制到pgopti_ref.*并将其用作-ref,然后使用不同的输入再次运行以获得新的pgopti*