我有以下设置(使用g++
10和lcov
1.14):
g++ SampleScript.cpp -g -O0 -fprofile-arcs -ftest-coverage -o MyScript
./MyScript
lcov -d . -c -o coverage.info --rc lcov_branch_coverage=1
genhtml coverage.info -o cov_out --legend --branch-coverage
与
/* SampleScript.cpp */
class Container
{
public:
Container()
: m_value(0) { }
Container(int value)
: m_value(value) { }
int& value()
{
return m_value;
}
const int& value() const
{
return m_value;
}
private:
int m_value;
};
int main()
{
const Container c;
return c.value();
}
但生成的输出结果显示覆盖率为100%,尽管我的代码跳过了两个函数(1个构造函数和1个
value()
函数)。我是否缺少任何设置?
int& Container::value() { ... }
。(b) 抱歉,我可能把它弄得比必要的还要复杂。如果你在某个地方调用该函数,则会生成该函数的代码。当然,你也可以为其编写一个测试用例,因此这个建议在实践中并不是那么有用... - amon