GUI: Add 'Clang Analyzer' option

This commit is contained in:
Daniel Marjamäki 2017-09-22 18:57:53 +02:00
parent 6ddcfc3d1c
commit 791f6ecbec
4 changed files with 29 additions and 13 deletions

View File

@ -155,6 +155,8 @@ 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
args << "-std=c++14";
QString analyzerInfoFile; QString analyzerInfoFile;
@ -194,12 +196,19 @@ void CheckThread::runAddonsAndTools(const QString &addonPath, const ImportProjec
} }
if (addon == CLANG_ANALYZER) { if (addon == CLANG_ANALYZER) {
/*
// Using clang
args.insert(0,"--analyze"); args.insert(0,"--analyze");
args.insert(1, "-Xanalyzer"); args.insert(1, "-Xanalyzer");
args.insert(2, "-analyzer-output=text"); args.insert(2, "-analyzer-output=text");
args << fileName; args << fileName;
*/
// Using clang-tidy
args.insert(0,"-checks=-*,clang-analyzer-*");
args.insert(1, fileName);
args.insert(2, "--");
} else { } else {
args.insert(0,"-checks=*,-clang*,-llvm*"); args.insert(0,"-checks=*,-clang-analyzer-*,-llvm*");
args.insert(1, fileName); args.insert(1, fileName);
args.insert(2, "--"); args.insert(2, "--");
} }
@ -209,8 +218,7 @@ void CheckThread::runAddonsAndTools(const QString &addonPath, const ImportProjec
#else #else
const QString ext = ""; const QString ext = "";
#endif #endif
const QString exename(addon == CLANG_ANALYZER ? ("clang" + ext) : ("clang-tidy" + ext)); const QString cmd(mClangPath.isEmpty() ? ("clang-tidy" + ext) : (mClangPath + "/clang-tidy" + ext));
const QString cmd(mClangPath.isEmpty() ? exename : (mClangPath + '/' + exename));
{ {
QString debug(cmd.contains(" ") ? ('\"' + cmd + '\"') : cmd); QString debug(cmd.contains(" ") ? ('\"' + cmd + '\"') : cmd);
foreach (QString arg, args) { foreach (QString arg, args) {

View File

@ -639,11 +639,12 @@ QStringList ProjectFile::fromNativeSeparators(const QStringList &paths)
return ret; return ret;
} }
QStringList ProjectFile::getAddonsAndTools() const { QStringList ProjectFile::getAddonsAndTools() const
QStringList ret(mAddons); {
if (mClangAnalyzer) QStringList ret(mAddons);
ret << CLANG_ANALYZER; if (mClangAnalyzer)
if (mClangTidy) ret << CLANG_ANALYZER;
ret << CLANG_TIDY; if (mClangTidy)
return ret; ret << CLANG_TIDY;
} return ret;
}

View File

@ -147,7 +147,7 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile)
mUI.mAddonThreadSafety->setChecked(projectFile->getAddons().contains("threadsafety")); mUI.mAddonThreadSafety->setChecked(projectFile->getAddons().contains("threadsafety"));
mUI.mAddonY2038->setChecked(projectFile->getAddons().contains("y2038")); mUI.mAddonY2038->setChecked(projectFile->getAddons().contains("y2038"));
mUI.mAddonCert->setChecked(projectFile->getAddons().contains("cert")); mUI.mAddonCert->setChecked(projectFile->getAddons().contains("cert"));
//mUI.mToolClangAnalyzer->setChecked(projectFile->getClangAnalyzer()); mUI.mToolClangAnalyzer->setChecked(projectFile->getClangAnalyzer());
mUI.mToolClangTidy->setChecked(projectFile->getClangTidy()); mUI.mToolClangTidy->setChecked(projectFile->getClangTidy());
QString tags; QString tags;
foreach (const QString tag, projectFile->getTags()) { foreach (const QString tag, projectFile->getTags()) {
@ -180,7 +180,7 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const
if (mUI.mAddonCert->isChecked()) if (mUI.mAddonCert->isChecked())
list << "cert"; list << "cert";
projectFile->setAddons(list); projectFile->setAddons(list);
//projectFile->setClangAnalyzer(mUI.mToolClangAnalyzer->isChecked()); projectFile->setClangAnalyzer(mUI.mToolClangAnalyzer->isChecked());
projectFile->setClangTidy(mUI.mToolClangTidy->isChecked()); projectFile->setClangTidy(mUI.mToolClangTidy->isChecked());
QStringList tags(mUI.mEditTags->text().split(";")); QStringList tags(mUI.mEditTags->text().split(";"));
tags.removeAll(QString()); tags.removeAll(QString());

View File

@ -520,6 +520,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="mToolClangAnalyzer">
<property name="text">
<string>Clang analyzer</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QCheckBox" name="mToolClangTidy"> <widget class="QCheckBox" name="mToolClangTidy">
<property name="text"> <property name="text">