Do safe division instead of fixing result
This commit is contained in:
parent
55e7d082e9
commit
5e9b2b94da
@ -29,11 +29,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#define SAFEDIV(x,y) (((y)!=0)?((x)/(y)):(0))
|
||||||
# define FIXNUM(x) (_finite(x)?(x):(0))
|
|
||||||
#else
|
|
||||||
# define FIXNUM(x) (finite(x)?(x):(0))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_CURL
|
#ifdef HAVE_CURL
|
||||||
static struct tm* GetNightlyTime(std::string str)
|
static struct tm* GetNightlyTime(std::string str)
|
||||||
@ -1444,10 +1440,10 @@ int cmCTest::CoverageDirectory()
|
|||||||
float cmet = 0;
|
float cmet = 0;
|
||||||
if ( total_tested + total_untested > 0 && (cov.m_Tested + cov.m_UnTested) > 0)
|
if ( total_tested + total_untested > 0 && (cov.m_Tested + cov.m_UnTested) > 0)
|
||||||
{
|
{
|
||||||
cper = (100 * static_cast<float>(cov.m_Tested)/
|
cper = (100 * SAFEDIV(static_cast<float>(cov.m_Tested),
|
||||||
static_cast<float>(cov.m_Tested + cov.m_UnTested));
|
static_cast<float>(cov.m_Tested + cov.m_UnTested)));
|
||||||
cmet = ( static_cast<float>(cov.m_Tested + 10) /
|
cmet = ( SAFEDIV(static_cast<float>(cov.m_Tested + 10),
|
||||||
static_cast<float>(cov.m_Tested + cov.m_UnTested + 10));
|
static_cast<float>(cov.m_Tested + cov.m_UnTested + 10)));
|
||||||
}
|
}
|
||||||
|
|
||||||
log << "\t<File Name=\"" << cit->first << "\" FullPath=\"" << cov.m_FullPath
|
log << "\t<File Name=\"" << cit->first << "\" FullPath=\"" << cov.m_FullPath
|
||||||
@ -1457,11 +1453,11 @@ int cmCTest::CoverageDirectory()
|
|||||||
<< "\t\t<PercentCoverage>";
|
<< "\t\t<PercentCoverage>";
|
||||||
log.setf(std::ios::fixed, std::ios::floatfield);
|
log.setf(std::ios::fixed, std::ios::floatfield);
|
||||||
log.precision(2);
|
log.precision(2);
|
||||||
log << FIXNUM(cper) << "</PercentCoverage>\n"
|
log << (cper) << "</PercentCoverage>\n"
|
||||||
<< "\t\t<CoverageMetric>";
|
<< "\t\t<CoverageMetric>";
|
||||||
log.setf(std::ios::fixed, std::ios::floatfield);
|
log.setf(std::ios::fixed, std::ios::floatfield);
|
||||||
log.precision(2);
|
log.precision(2);
|
||||||
log << FIXNUM(cmet) << "</CoverageMetric>\n"
|
log << (cmet) << "</CoverageMetric>\n"
|
||||||
<< "\t</File>" << std::endl;
|
<< "\t</File>" << std::endl;
|
||||||
ccount ++;
|
ccount ++;
|
||||||
}
|
}
|
||||||
@ -1476,8 +1472,8 @@ int cmCTest::CoverageDirectory()
|
|||||||
}
|
}
|
||||||
|
|
||||||
int total_lines = total_tested + total_untested;
|
int total_lines = total_tested + total_untested;
|
||||||
float percent_coverage = 100 * static_cast<float>(total_tested) /
|
float percent_coverage = 100 * SAFEDIV(static_cast<float>(total_tested),
|
||||||
static_cast<float>(total_lines);
|
static_cast<float>(total_lines));
|
||||||
if ( total_lines == 0 )
|
if ( total_lines == 0 )
|
||||||
{
|
{
|
||||||
percent_coverage = 0;
|
percent_coverage = 0;
|
||||||
@ -1491,7 +1487,7 @@ int cmCTest::CoverageDirectory()
|
|||||||
<< "\t<PercentCoverage>";
|
<< "\t<PercentCoverage>";
|
||||||
log.setf(std::ios::fixed, std::ios::floatfield);
|
log.setf(std::ios::fixed, std::ios::floatfield);
|
||||||
log.precision(2);
|
log.precision(2);
|
||||||
log << FIXNUM(percent_coverage)<< "</PercentCoverage>\n"
|
log << (percent_coverage)<< "</PercentCoverage>\n"
|
||||||
<< "\t<EndDateTime>" << end_time << "</EndDateTime>\n"
|
<< "\t<EndDateTime>" << end_time << "</EndDateTime>\n"
|
||||||
<< "</Coverage>\n"
|
<< "</Coverage>\n"
|
||||||
<< "</Site>" << std::endl;
|
<< "</Site>" << std::endl;
|
||||||
@ -1503,7 +1499,7 @@ int cmCTest::CoverageDirectory()
|
|||||||
|
|
||||||
std::cout.setf(std::ios::fixed, std::ios::floatfield);
|
std::cout.setf(std::ios::fixed, std::ios::floatfield);
|
||||||
std::cout.precision(2);
|
std::cout.precision(2);
|
||||||
std::cout << FIXNUM(percent_coverage) << "%" << std::endl;
|
std::cout << (percent_coverage) << "%" << std::endl;
|
||||||
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user