5757#include " frontend.h"
5858
5959#include < algorithm>
60+ #include < cstddef>
61+ #include < fstream>
6062#include < iterator>
6163#include < list>
6264#include < memory>
@@ -661,9 +663,11 @@ void MainWindow::doAnalyzeFiles(const QStringList &files, const bool checkLibrar
661663 return ;
662664 }
663665
664- mUI -> mResults -> checkingStarted (fileNames. count () );
666+ std::list<FileWithDetails> fdetails = enrichFilesForAnalysis (fileNames, checkSettings );
665667
666- mThread ->setFiles (fileNames);
668+ // TODO: lock UI here?
669+ mUI ->mResults ->checkingStarted (fdetails.size ());
670+ mThread ->setFiles (std::move (fdetails));
667671 if (mProjectFile && !checkConfiguration)
668672 mThread ->setAddonsAndTools (mProjectFile ->getAddonsAndTools ());
669673 mThread ->setSuppressions (mProjectFile ? mProjectFile ->getCheckingSuppressions () : QList<SuppressionList::Suppression>());
@@ -701,9 +705,9 @@ void MainWindow::analyzeCode(const QString& code, const QString& filename)
701705 if (!getCppcheckSettings (checkSettings, supprs))
702706 return ;
703707
708+ // TODO: split ErrorLogger from ThreadResult
704709 // Initialize dummy ThreadResult as ErrorLogger
705710 ThreadResult result;
706- result.setFiles (QStringList (filename));
707711 connect (&result, SIGNAL (progress (int ,QString)),
708712 mUI ->mResults , SLOT (progress (int ,QString)));
709713 connect (&result, SIGNAL (error (ErrorItem)),
@@ -720,7 +724,7 @@ void MainWindow::analyzeCode(const QString& code, const QString& filename)
720724 checkLockDownUI ();
721725 clearResults ();
722726 mUI ->mResults ->checkingStarted (1 );
723- // TODO: apply enforcedLanguage
727+ // TODO: apply enforcedLanguage?
724728 cppcheck.check (FileWithDetails (filename.toStdString (), Path::identify (filename.toStdString (), false ), 0 ), code.toStdString ());
725729 analysisDone ();
726730
@@ -1380,10 +1384,12 @@ void MainWindow::reAnalyzeSelected(const QStringList& files)
13801384 pathList.addPathList (files);
13811385 if (mProjectFile )
13821386 pathList.addExcludeList (mProjectFile ->getExcludedPaths ());
1383- QStringList fileNames = pathList.getFileList ();
1387+
1388+ std::list<FileWithDetails> fdetails = enrichFilesForAnalysis (pathList.getFileList (), checkSettings);
1389+
13841390 checkLockDownUI (); // lock UI while checking
1385- mUI ->mResults ->checkingStarted (fileNames .size ());
1386- mThread ->setCheckFiles (fileNames );
1391+ mUI ->mResults ->checkingStarted (fdetails .size ());
1392+ mThread ->setCheckFiles (std::move (fdetails) );
13871393
13881394 // Saving last check start time, otherwise unchecked modified files will not be
13891395 // considered in "Modified Files Check" performed after "Selected Files Check"
@@ -1396,7 +1402,7 @@ void MainWindow::reAnalyzeSelected(const QStringList& files)
13961402
13971403void MainWindow::reAnalyze (bool all)
13981404{
1399- const QStringList files = mThread ->getReCheckFiles (all);
1405+ const std::list<FileWithDetails> files = mThread ->getReCheckFiles (all);
14001406 if (files.empty ())
14011407 return ;
14021408
@@ -1409,8 +1415,8 @@ void MainWindow::reAnalyze(bool all)
14091415 mUI ->mResults ->clear (all);
14101416
14111417 // Clear results for changed files
1412- for (int i = 0 ; i < files. size (); ++i )
1413- mUI ->mResults ->clear (files[i] );
1418+ for (const auto & f : files)
1419+ mUI ->mResults ->clear (QString::fromStdString (f. path ()) );
14141420
14151421 checkLockDownUI (); // lock UI while checking
14161422 mUI ->mResults ->checkingStarted (files.size ());
@@ -2349,3 +2355,12 @@ void MainWindow::changeReportType() {
23492355 }
23502356}
23512357
2358+ std::list<FileWithDetails> MainWindow::enrichFilesForAnalysis (const QStringList& fileNames, const Settings& settings) const {
2359+ std::list<FileWithDetails> fdetails;
2360+ std::transform (fileNames.cbegin (), fileNames.cend (), std::back_inserter (fdetails), [](const QString& f) {
2361+ return FileWithDetails{f.toStdString (), Standards::Language::None, static_cast <std::size_t >(QFile (f).size ())};
2362+ });
2363+ const Standards::Language enforcedLang = static_cast <Standards::Language>(mSettings ->value (SETTINGS_ENFORCED_LANGUAGE, 0 ).toInt ());
2364+ frontend::applyLang (fdetails, settings, enforcedLang);
2365+ return fdetails;
2366+ }
0 commit comments