Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.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
使用gcovr-Linux和perl自动测试C程序的覆盖率_C_Linux_Perl_Gcov_Gcovr - Fatal编程技术网

使用gcovr-Linux和perl自动测试C程序的覆盖率

使用gcovr-Linux和perl自动测试C程序的覆盖率,c,linux,perl,gcov,gcovr,C,Linux,Perl,Gcov,Gcovr,我想测试2C程序来检查它的覆盖率(行覆盖率和分支覆盖率) 我在linux系统中使用gcovr 为此,我编写了一个Perl脚本,它将调用gcc编译器并从文件中读取输入,然后测试C程序的覆盖率 我有许多以文件形式提供给C程序的测试套件,我使用Perl自动化输入,并使用gcovr获得覆盖率 当然,我使用了system命令和perl中的backtics来调用gcc和gcovr 第一个C程序运行良好,因为程序的输入是从给定的参数读取的 但对于第二个C程序,我感到困惑,因为该程序只接受来自键盘的输入,或者简

我想测试2C程序来检查它的覆盖率(行覆盖率和分支覆盖率)

我在linux系统中使用gcovr

为此,我编写了一个Perl脚本,它将调用
gcc
编译器并从文件中读取输入,然后测试C程序的覆盖率

我有许多以文件形式提供给C程序的测试套件,我使用Perl自动化输入,并使用
gcovr
获得覆盖率

当然,我使用了
system
命令和perl中的backtics来调用
gcc
gcovr

第一个C程序运行良好,因为程序的输入是从给定的参数读取的

但对于第二个C程序,我感到困惑,因为该程序只接受来自键盘的输入,或者简单地说“它正在使用
scanf


那么,我们如何向C程序提供输入,这些程序只能通过终端linux接受键盘(
scanf
)的输入,或者使用带有
system
命令的perl?

scanf
接受
stdin
的输入。启动程序并让程序从该文件获取输入时,可以将stdin重定向到文件

重定向是操作系统的一项功能,而不是特定语言的一项功能

假设您要启动程序,并且您知道此程序将接受“10”“y”和“n”作为输入。你所要做的就是创建一个包含这些行的文件,不管你用什么方法。假设该文件名为test_1


然后用
tested\u程序
启动程序,程序将使用“10”、“y”和“n”作为输入。

scanf
接受来自
stdin
的输入。启动程序并让程序从该文件获取输入时,可以将stdin重定向到文件

重定向是操作系统的一项功能,而不是特定语言的一项功能

假设您要启动程序,并且您知道此程序将接受“10”“y”和“n”作为输入。你所要做的就是创建一个包含这些行的文件,不管你用什么方法。假设该文件名为test_1


启动程序后,使用代码> TESTEDDY程序< Test1 1/代码>,程序将使用“10”、“y”和“n”作为输入。

< P>如果使用Perl命令<代码>系统< /> >不是严格要求,则可以考虑使用。它比系统更高级,您可以指定STDIN、STDOUT和STDERR的用法。因此,您可以在文本文件中写入C程序的输入,创建该文件的句柄,并使用Open3调用C程序指定文件句柄为第一个参数。

< P>如果使用Perl命令<代码>系统< /C>不是严格要求,则可以考虑使用。它比系统更高级,您可以指定STDIN、STDOUT和STDERR的用法。因此,您可以将输入写入文本文件中的C程序,创建该文件的句柄,并使用Open3调用C程序,将该文件句柄指定为第一个参数。

您能在回答中提供一些示例代码吗?我是Perl新手。也许寻找示例代码会对我有所帮助。:)仅供参考,C程序无法更新或修改。我只能用Perl脚本测试它。你能在回答中提供一些示例代码吗?我是Perl新手。也许寻找示例代码会对我有所帮助。:)仅供参考,C程序无法更新或修改。我只能用Perl脚本来测试它。我是Perl新手,请在答案中加入一些示例代码,以供参考。C程序无法修改或更新。我只是想用perl测试一下。我是perl新手,请在回答中加入一些示例代码,以供参考。C程序无法修改或更新。我只是想用perl测试一下。