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