File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -683,7 +683,7 @@ frontend/frontend.o: frontend/frontend.cpp frontend/frontend.h lib/addoninfo.h l
683683cli/cmdlineparser.o : cli/cmdlineparser.cpp cli/cmdlinelogger.h cli/cmdlineparser.h cli/filelister.h externals/tinyxml2/tinyxml2.h lib/addoninfo.h lib/check.h lib/checkers.h lib/color.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/filesettings.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/regex.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h lib/xml.h
684684 $(CXX ) ${INCLUDE_FOR_CLI} $(CPPFLAGS ) $(CXXFLAGS ) -c -o $@ cli/cmdlineparser.cpp
685685
686- cli/cppcheckexecutor.o : cli/cppcheckexecutor.cpp cli/cmdlinelogger.h cli/cmdlineparser.h cli/cppcheckexecutor.h cli/executor.h cli/processexecutor.h cli/sehwrapper.h cli/signalhandler.h cli/singleexecutor.h cli/threadexecutor.h externals/picojson/picojson.h lib/addoninfo.h lib/analyzerinfo.h lib/check.h lib/checkers.h lib/checkersreport.h lib/color.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/filesettings.h lib/json.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h
686+ cli/cppcheckexecutor.o : cli/cppcheckexecutor.cpp cli/cmdlinelogger.h cli/cmdlineparser.h cli/cppcheckexecutor.h cli/executor.h cli/processexecutor.h cli/sehwrapper.h cli/signalhandler.h cli/singleexecutor.h cli/threadexecutor.h externals/picojson/picojson.h lib/addoninfo.h lib/analyzerinfo.h lib/check.h lib/checkers.h lib/checkersreport.h lib/color.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/filesettings.h lib/json.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/ utils.h
687687 $(CXX ) ${INCLUDE_FOR_CLI} $(CPPFLAGS ) $(CXXFLAGS ) -c -o $@ cli/cppcheckexecutor.cpp
688688
689689cli/executor.o : cli/executor.cpp cli/executor.h lib/addoninfo.h lib/checkers.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h
Original file line number Diff line number Diff line change 3737#include " settings.h"
3838#include " singleexecutor.h"
3939#include " suppressions.h"
40+ #include " timer.h"
4041#include " utils.h"
4142
4243#if defined(HAS_THREADING_MODEL_THREAD)
@@ -408,6 +409,7 @@ namespace {
408409
409410int CppCheckExecutor::check (int argc, const char * const argv[])
410411{
412+ WholeProgramTimer timer;
411413 Settings settings;
412414 CmdLineLoggerStd logger;
413415 Suppressions supprs;
@@ -419,6 +421,9 @@ int CppCheckExecutor::check(int argc, const char* const argv[])
419421 return EXIT_SUCCESS;
420422 }
421423
424+ if (settings.showtime == SHOWTIME_MODES::SHOWTIME_NONE)
425+ timer.cancell ();
426+
422427 settings.loadSummaries ();
423428
424429 mFiles = parser.getFiles ();
Original file line number Diff line number Diff line change @@ -83,9 +83,6 @@ void TimerResults::showResults(SHOWTIME_MODES mode) const
8383 }
8484 ++ordinal;
8585 }
86-
87- const double secOverall = overallData.seconds ();
88- std::cout << " Overall time: " << secOverall << " s" << std::endl;
8986}
9087
9188void TimerResults::addResults (const std::string& str, std::clock_t clocks)
@@ -142,3 +139,37 @@ void Timer::stop()
142139
143140 mStopped = true ;
144141}
142+
143+ WholeProgramTimer::~WholeProgramTimer ()
144+ {
145+ stop ();
146+ }
147+
148+ void WholeProgramTimer::stop ()
149+ {
150+ if (mCancelled )
151+ return ;
152+ const auto end = std::chrono::high_resolution_clock::now ();
153+ auto diff = std::chrono::duration_cast<std::chrono::microseconds>(end - mStart );
154+
155+ // Extract hours
156+ auto hours = std::chrono::duration_cast<std::chrono::hours>(diff);
157+ diff -= hours; // Subtract the extracted hours
158+
159+ // Extract minutes
160+ auto minutes = std::chrono::duration_cast<std::chrono::minutes>(diff);
161+ diff -= minutes; // Subtract the extracted minutes
162+
163+ // Extract seconds
164+ auto seconds = static_cast <double >(diff.count ()) / std::chrono::microseconds::period::den;
165+
166+ std::string ellapsedTime;
167+ if (hours.count () > 0 )
168+ ellapsedTime += std::to_string (hours.count ()) + " h " ;
169+ if (minutes.count () > 0 )
170+ ellapsedTime += std::to_string (minutes.count ()) + " m " ;
171+ ellapsedTime += std::to_string (seconds) + " s " ;
172+
173+ std::lock_guard<std::mutex> l (stdCoutLock);
174+ std::cout << " Overall time: " << ellapsedTime << std::endl;
175+ }
Original file line number Diff line number Diff line change @@ -93,5 +93,22 @@ class CPPCHECKLIB Timer {
9393 const SHOWTIME_MODES mShowTimeMode = SHOWTIME_MODES::SHOWTIME_FILE_TOTAL;
9494 bool mStopped {};
9595};
96+
97+ class CPPCHECKLIB WholeProgramTimer {
98+ public:
99+ WholeProgramTimer ()
100+ : mStart (std::chrono::high_resolution_clock::now())
101+ {}
102+ ~WholeProgramTimer ();
103+
104+ void stop ();
105+
106+ void cancell () {
107+ mCancelled = true ;
108+ }
109+ private:
110+ std::chrono::system_clock::time_point mStart ;
111+ bool mCancelled {false };
112+ };
96113// ---------------------------------------------------------------------------
97114#endif // timerH
You can’t perform that action at this time.
0 commit comments