Added C++14 option
This commit is contained in:
parent
791f6ecbec
commit
9f306cf3aa
|
@ -523,6 +523,8 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
|
|||
_settings->standards.cpp = Standards::CPP03;
|
||||
} else if (std::strcmp(argv[i], "--std=c++11") == 0) {
|
||||
_settings->standards.cpp = Standards::CPP11;
|
||||
} else if (std::strcmp(argv[i], "--std=c++14") == 0) {
|
||||
_settings->standards.cpp = Standards::CPP14;
|
||||
}
|
||||
|
||||
// Output formatter
|
||||
|
@ -985,7 +987,9 @@ void CmdLineParser::PrintHelp()
|
|||
" * c++03\n"
|
||||
" C++ code is C++03 compatible\n"
|
||||
" * c++11\n"
|
||||
" C++ code is C++11 compatible (default)\n"
|
||||
" C++ code is C++11 compatible\n"
|
||||
" * c++14\n"
|
||||
" C++ code is C++14 compatible (default)\n"
|
||||
" More than one --std can be used:\n"
|
||||
" 'cppcheck --std=c99 --std=posix file.c'\n"
|
||||
" --suppress=<spec> Suppress warnings that match <spec>. The format of\n"
|
||||
|
|
|
@ -155,8 +155,19 @@ void CheckThread::runAddonsAndTools(const QString &addonPath, const ImportProjec
|
|||
|
||||
if (!fileSettings->standard.empty())
|
||||
args << ("-std=" + QString::fromStdString(fileSettings->standard));
|
||||
else
|
||||
args << "-std=c++14";
|
||||
else {
|
||||
switch (mCppcheck.settings().standards.cpp) {
|
||||
case Standards::CPP03:
|
||||
args << "-std=c++03";
|
||||
break;
|
||||
case Standards::CPP11:
|
||||
args << "-std=c++11";
|
||||
break;
|
||||
case Standards::CPP14:
|
||||
args << "-std=c++14";
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
QString analyzerInfoFile;
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
// Standards support
|
||||
#define SETTINGS_STD_CPP03 "Platform CPP03"
|
||||
#define SETTINGS_STD_CPP11 "Platform CPP11"
|
||||
#define SETTINGS_STD_CPP14 "Platform CPP14"
|
||||
#define SETTINGS_STD_C89 "Platform C89"
|
||||
#define SETTINGS_STD_C99 "Platform C99"
|
||||
#define SETTINGS_STD_C11 "Platform C11"
|
||||
|
|
|
@ -199,6 +199,7 @@ MainWindow::MainWindow(TranslationHandler* th, QSettings* settings) :
|
|||
|
||||
mUI.mActionCpp03->setActionGroup(mCppStandardActions);
|
||||
mUI.mActionCpp11->setActionGroup(mCppStandardActions);
|
||||
mUI.mActionCpp14->setActionGroup(mCppStandardActions);
|
||||
|
||||
mUI.mActionEnforceC->setActionGroup(mSelectLanguageActions);
|
||||
mUI.mActionEnforceCpp->setActionGroup(mSelectLanguageActions);
|
||||
|
@ -276,7 +277,9 @@ void MainWindow::loadSettings()
|
|||
const bool stdCpp03 = mSettings->value(SETTINGS_STD_CPP03, false).toBool();
|
||||
mUI.mActionCpp03->setChecked(stdCpp03);
|
||||
const bool stdCpp11 = mSettings->value(SETTINGS_STD_CPP11, true).toBool();
|
||||
mUI.mActionCpp11->setChecked(stdCpp11 || !stdCpp03);
|
||||
mUI.mActionCpp11->setChecked(stdCpp11 && !stdCpp03);
|
||||
const bool stdCpp14 = mSettings->value(SETTINGS_STD_CPP14, true).toBool();
|
||||
mUI.mActionCpp14->setChecked(stdCpp14 && !stdCpp03 && !stdCpp11);
|
||||
const bool stdC89 = mSettings->value(SETTINGS_STD_C89, false).toBool();
|
||||
mUI.mActionC89->setChecked(stdC89);
|
||||
const bool stdC11 = mSettings->value(SETTINGS_STD_C11, false).toBool();
|
||||
|
@ -350,6 +353,7 @@ void MainWindow::saveSettings() const
|
|||
|
||||
mSettings->setValue(SETTINGS_STD_CPP03, mUI.mActionCpp03->isChecked());
|
||||
mSettings->setValue(SETTINGS_STD_CPP11, mUI.mActionCpp11->isChecked());
|
||||
mSettings->setValue(SETTINGS_STD_CPP14, mUI.mActionCpp14->isChecked());
|
||||
mSettings->setValue(SETTINGS_STD_C89, mUI.mActionC89->isChecked());
|
||||
mSettings->setValue(SETTINGS_STD_C99, mUI.mActionC99->isChecked());
|
||||
mSettings->setValue(SETTINGS_STD_C11, mUI.mActionC11->isChecked());
|
||||
|
@ -449,16 +453,16 @@ void MainWindow::doAnalyzeProject(ImportProject p)
|
|||
mThread->setPythonPath(mSettings->value(SETTINGS_PYTHON_PATH).toString());
|
||||
QString clangHeaders = mSettings->value(SETTINGS_VS_INCLUDE_PATHS).toString();
|
||||
mThread->setClangIncludePaths(clangHeaders.split(";"));
|
||||
#ifdef Q_OS_WIN
|
||||
QString clangPath = mSettings->value(SETTINGS_CLANG_PATH,QString()).toString();
|
||||
#ifdef Q_OS_WIN
|
||||
if (clangPath.isEmpty()) {
|
||||
// Try to autodetect clang
|
||||
if (QFileInfo("C:/Program Files/LLVM/bin/clang.exe").exists())
|
||||
clangPath = "C:/Program Files/LLVM/bin";
|
||||
}
|
||||
#endif
|
||||
mThread->setClangPath(clangPath);
|
||||
mThread->setSuppressions(mProjectFile->getSuppressions());
|
||||
#endif
|
||||
}
|
||||
mThread->setProject(p);
|
||||
mThread->check(checkSettings);
|
||||
|
@ -868,7 +872,12 @@ Settings MainWindow::getCppcheckSettings()
|
|||
result.inlineSuppressions = mSettings->value(SETTINGS_INLINE_SUPPRESSIONS, false).toBool();
|
||||
result.inconclusive = mSettings->value(SETTINGS_INCONCLUSIVE_ERRORS, false).toBool();
|
||||
result.platformType = (Settings::PlatformType) mSettings->value(SETTINGS_CHECKED_PLATFORM, 0).toInt();
|
||||
result.standards.cpp = mSettings->value(SETTINGS_STD_CPP11, true).toBool() ? Standards::CPP11 : Standards::CPP03;
|
||||
if (mSettings->value(SETTINGS_STD_CPP03, false).toBool())
|
||||
result.standards.cpp = Standards::CPP03;
|
||||
else if (mSettings->value(SETTINGS_STD_CPP11, false).toBool())
|
||||
result.standards.cpp = Standards::CPP11;
|
||||
else if (mSettings->value(SETTINGS_STD_CPP14, true).toBool())
|
||||
result.standards.cpp = Standards::CPP14;
|
||||
result.standards.c = mSettings->value(SETTINGS_STD_C99, true).toBool() ? Standards::C99 : (mSettings->value(SETTINGS_STD_C11, false).toBool() ? Standards::C11 : Standards::C89);
|
||||
result.standards.posix = mSettings->value(SETTINGS_STD_POSIX, false).toBool();
|
||||
result.enforcedLang = (Settings::Language)mSettings->value(SETTINGS_ENFORCED_LANGUAGE, 0).toInt();
|
||||
|
|
|
@ -136,6 +136,7 @@
|
|||
</property>
|
||||
<addaction name="mActionCpp03"/>
|
||||
<addaction name="mActionCpp11"/>
|
||||
<addaction name="mActionCpp14"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuC_standard">
|
||||
<property name="title">
|
||||
|
@ -681,7 +682,7 @@
|
|||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>C++&11</string>
|
||||
|
@ -778,6 +779,17 @@
|
|||
<string>E&nforce C</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="mActionCpp14">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>C++14</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
|
|
@ -36,13 +36,13 @@ struct Standards {
|
|||
enum cstd_t { C89, C99, C11, CLatest=C11 } c;
|
||||
|
||||
/** C++ code standard */
|
||||
enum cppstd_t { CPP03, CPP11, CPPLatest=CPP11 } cpp;
|
||||
enum cppstd_t { CPP03, CPP11, CPP14, CPPLatest=CPP14 } cpp;
|
||||
|
||||
/** Code is posix */
|
||||
bool posix;
|
||||
|
||||
/** This constructor clear all the variables **/
|
||||
Standards() : c(C11), cpp(CPP11), posix(false) {}
|
||||
Standards() : c(C11), cpp(CPP14), posix(false) {}
|
||||
|
||||
bool setC(const std::string& str) {
|
||||
if (str == "c89" || str == "C89") {
|
||||
|
@ -68,6 +68,10 @@ struct Standards {
|
|||
cpp = CPP11;
|
||||
return true;
|
||||
}
|
||||
if (str == "c++14" || str == "C++14") {
|
||||
cpp = CPP14;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue