diff --git a/gui/gui.pro b/gui/gui.pro index 7275ec285..d98e152a5 100644 --- a/gui/gui.pro +++ b/gui/gui.pro @@ -16,6 +16,10 @@ contains(LINKCORE, [yY][eE][sS]) { } LIBS += -L$$PWD/../externals +# z3 +LIBS += -lz3 +QMAKE_CXXFLAGS += -DUSE_Z3 + DESTDIR = . RCC_DIR = temp MOC_DIR = temp diff --git a/gui/gui.qrc b/gui/gui.qrc index aa669b4f8..c40e1ba7a 100644 --- a/gui/gui.qrc +++ b/gui/gui.qrc @@ -28,5 +28,6 @@ images/applications-development.png images/applications-system.png images/llvm-dragon.png + images/verify.svg diff --git a/gui/images/verify.svg b/gui/images/verify.svg new file mode 100644 index 000000000..41cdf3c04 --- /dev/null +++ b/gui/images/verify.svg @@ -0,0 +1,74 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index e06d0dee3..024fddb46 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -840,6 +840,7 @@ Settings MainWindow::getCppcheckSettings() } result.clang = mProjectFile->clangParser; + result.bugHunting = mProjectFile->bugHunting; const QStringList undefines = mProjectFile->getUndefines(); foreach (QString undefine, undefines) diff --git a/gui/projectfile.cpp b/gui/projectfile.cpp index cbcd6c6e0..f5bce9ebf 100644 --- a/gui/projectfile.cpp +++ b/gui/projectfile.cpp @@ -46,6 +46,7 @@ ProjectFile::ProjectFile(const QString &filename, QObject *parent) : void ProjectFile::clear() { clangParser = false; + bugHunting = false; mRootPath.clear(); mBuildDir.clear(); mImportProject.clear(); @@ -115,6 +116,9 @@ bool ProjectFile::read(const QString &filename) if (xmlReader.name() == CppcheckXml::Parser) clangParser = true; + if (xmlReader.name() == CppcheckXml::BugHunting) + bugHunting = true; + if (xmlReader.name() == CppcheckXml::CheckHeadersElementName) mCheckHeaders = readBool(xmlReader); @@ -719,6 +723,11 @@ bool ProjectFile::write(const QString &filename) xmlWriter.writeEndElement(); } + if (bugHunting) { + xmlWriter.writeStartElement(CppcheckXml::BugHunting); + xmlWriter.writeEndElement(); + } + xmlWriter.writeStartElement(CppcheckXml::CheckHeadersElementName); xmlWriter.writeCharacters(mCheckHeaders ? "true" : "false"); xmlWriter.writeEndElement(); diff --git a/gui/projectfile.h b/gui/projectfile.h index de47b0f98..b0a5c4705 100644 --- a/gui/projectfile.h +++ b/gui/projectfile.h @@ -366,6 +366,8 @@ public: /** Use Clang parser */ bool clangParser; + /** Bug hunting */ + bool bugHunting; protected: /** diff --git a/gui/projectfiledialog.cpp b/gui/projectfiledialog.cpp index 6e2a26c8a..d8800fce1 100644 --- a/gui/projectfiledialog.cpp +++ b/gui/projectfiledialog.cpp @@ -264,6 +264,7 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile) mUI.mBtnClangParser->setChecked(true); else mUI.mBtnCppcheckParser->setChecked(true); + mUI.mBugHunting->setChecked(projectFile->bugHunting); setExcludedPaths(projectFile->getExcludedPaths()); setLibraries(projectFile->getLibraries()); const QString platform = projectFile->getPlatform(); @@ -366,6 +367,7 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const projectFile->setExcludedPaths(getExcludedPaths()); projectFile->setLibraries(getLibraries()); projectFile->clangParser = mUI.mBtnClangParser->isChecked(); + projectFile->bugHunting = mUI.mBugHunting->isChecked(); if (mUI.mComboBoxPlatform->currentText().endsWith(".xml")) projectFile->setPlatform(mUI.mComboBoxPlatform->currentText()); else { diff --git a/gui/projectfiledialog.ui b/gui/projectfiledialog.ui index 343fd60e7..add2a2bad 100644 --- a/gui/projectfiledialog.ui +++ b/gui/projectfiledialog.ui @@ -7,7 +7,7 @@ 0 0 888 - 546 + 600 @@ -388,6 +388,13 @@ Analysis + + + + Bug hunting + + + diff --git a/lib/importproject.h b/lib/importproject.h index 2a600028a..948f57cb1 100644 --- a/lib/importproject.h +++ b/lib/importproject.h @@ -123,6 +123,7 @@ namespace CppcheckXml { const char ImportProjectElementName[] = "importproject"; const char AnalyzeAllVsConfigsElementName[] = "analyze-all-vs-configs"; const char Parser[] = "parser"; + const char BugHunting[] = "bug-hunting"; const char IncludeDirElementName[] = "includedir"; const char DirElementName[] = "dir"; const char DirNameAttrib[] = "name";