Skip to content

Commit e1d5d99

Browse files
authored
Fixed #11715 (Add --showtime=file-total option to show checking time of each file) (cppcheck-opensource#5049)
1 parent d5951fa commit e1d5d99

4 files changed

Lines changed: 23 additions & 9 deletions

File tree

cli/cmdlineparser.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,14 +830,16 @@ bool CmdLineParser::parseFromArgs(int argc, const char* const argv[])
830830
const std::string showtimeMode = argv[i] + 11;
831831
if (showtimeMode == "file")
832832
mSettings.showtime = SHOWTIME_MODES::SHOWTIME_FILE;
833+
else if (showtimeMode == "file-total")
834+
mSettings.showtime = SHOWTIME_MODES::SHOWTIME_FILE_TOTAL;
833835
else if (showtimeMode == "summary")
834836
mSettings.showtime = SHOWTIME_MODES::SHOWTIME_SUMMARY;
835837
else if (showtimeMode == "top5")
836838
mSettings.showtime = SHOWTIME_MODES::SHOWTIME_TOP5;
837839
else if (showtimeMode.empty())
838840
mSettings.showtime = SHOWTIME_MODES::SHOWTIME_NONE;
839841
else {
840-
printError("unrecognized showtime mode: \"" + showtimeMode + "\". Supported modes: file, summary, top5.");
842+
printError("unrecognized showtime mode: \"" + showtimeMode + "\". Supported modes: file, file-total, summary, top5.");
841843
return false;
842844
}
843845
}

lib/cppcheck.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,8 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
638638
if (Settings::terminated())
639639
return mExitCode;
640640

641+
const Timer fileTotalTimer(mSettings.showtime == SHOWTIME_MODES::SHOWTIME_FILE_TOTAL, filename);
642+
641643
if (!mSettings.quiet) {
642644
std::string fixedpath = Path::simplifyPath(filename);
643645
fixedpath = Path::toNativeSeparators(fixedpath);

lib/timer.cpp

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ namespace {
4040

4141
void TimerResults::showResults(SHOWTIME_MODES mode) const
4242
{
43-
if (mode == SHOWTIME_MODES::SHOWTIME_NONE)
43+
if (mode == SHOWTIME_MODES::SHOWTIME_NONE || mode == SHOWTIME_MODES::SHOWTIME_FILE_TOTAL)
4444
return;
4545

4646
std::cout << std::endl;
@@ -90,13 +90,18 @@ void TimerResults::addResults(const std::string& str, std::clock_t clocks)
9090
Timer::Timer(std::string str, SHOWTIME_MODES showtimeMode, TimerResultsIntf* timerResults)
9191
: mStr(std::move(str))
9292
, mTimerResults(timerResults)
93-
, mStart(0)
93+
, mStart(std::clock())
9494
, mShowTimeMode(showtimeMode)
95-
, mStopped(false)
96-
{
97-
if (showtimeMode != SHOWTIME_MODES::SHOWTIME_NONE)
98-
mStart = std::clock();
99-
}
95+
, mStopped(showtimeMode == SHOWTIME_MODES::SHOWTIME_NONE || showtimeMode == SHOWTIME_MODES::SHOWTIME_FILE_TOTAL)
96+
{}
97+
98+
Timer::Timer(bool fileTotal, std::string filename)
99+
: mStr(std::move(filename))
100+
, mTimerResults(nullptr)
101+
, mStart(std::clock())
102+
, mShowTimeMode(SHOWTIME_MODES::SHOWTIME_FILE_TOTAL)
103+
, mStopped(!fileTotal)
104+
{}
100105

101106
Timer::~Timer()
102107
{
@@ -112,6 +117,9 @@ void Timer::stop()
112117
if (mShowTimeMode == SHOWTIME_MODES::SHOWTIME_FILE) {
113118
const double sec = (double)diff / CLOCKS_PER_SEC;
114119
std::cout << mStr << ": " << sec << "s" << std::endl;
120+
} else if (mShowTimeMode == SHOWTIME_MODES::SHOWTIME_FILE_TOTAL) {
121+
const double sec = (double)diff / CLOCKS_PER_SEC;
122+
std::cout << "Check time: " << mStr << ": " << sec << "s" << std::endl;
115123
} else {
116124
if (mTimerResults)
117125
mTimerResults->addResults(mStr, diff);

lib/timer.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@
2828
#include <string>
2929

3030
enum class SHOWTIME_MODES {
31-
SHOWTIME_NONE = 0,
31+
SHOWTIME_NONE,
3232
SHOWTIME_FILE,
33+
SHOWTIME_FILE_TOTAL,
3334
SHOWTIME_SUMMARY,
3435
SHOWTIME_TOP5
3536
};
@@ -70,6 +71,7 @@ class CPPCHECKLIB TimerResults : public TimerResultsIntf {
7071
class CPPCHECKLIB Timer {
7172
public:
7273
Timer(std::string str, SHOWTIME_MODES showtimeMode, TimerResultsIntf* timerResults = nullptr);
74+
Timer(bool fileTotal, std::string filename);
7375
~Timer();
7476

7577
Timer(const Timer&) = delete;

0 commit comments

Comments
 (0)