3
我有一個測試這樣的代碼:如何在沒有優化的情況下使用gcc與gcc?
int diff21(int n)
{
if (n <= 21)
{
return 21 - n;
}
else
{
return (n - 21) * 2;
}
}
,我添加了編譯標誌:-fprofile-arcs -ftest-coverage
提供覆蓋數據。
我寫測試代碼:
CU_ASSERT(diff21(19) == 2);
,我用LCOV生成一個HTML報告,它說的else
分支的return (n - 21) * 2
是excuted,所以我做了100%的行覆蓋率。 這是不正確
我用Google搜索,發現是因爲this --- gcc的優化可以通過將其與其它線路相結合,消除一些簡單的代碼行,但我應該怎麼生成的覆蓋數據,如果我」米不應該使用-fprofile-arcs -ftest-coverage
國旗?
btw我使用netbeans和cygwin做單元測試,我不認爲在makefile或腳本中手動調用gcov
對我有好處。
只爲您的信息,我使用的LCOV這樣的:
#!/bin/bash
rm -rf coverage_report
rm -f app.info
lcov -b . -d . -c -o app.info
mkdir coverage_report
genhtml --legend --highlight -o coverage_report app.info
rm -f app.info
lcov -d . -z
這仍然會優化單一退貨狀態。 – shengy