Skip to content

Commit

Permalink
gui/mainwindows.cpp: use picojson to generate JSON
Browse files Browse the repository at this point in the history
  • Loading branch information
firewave committed Nov 29, 2023
1 parent 277de41 commit 51d8b67
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 15 deletions.
1 change: 1 addition & 0 deletions gui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ CheckOptions:
else()
target_include_directories(cppcheck-gui SYSTEM PRIVATE ${tinyxml2_INCLUDE_DIRS})
endif()
target_include_directories(cppcheck-gui PRIVATE ${PROJECT_SOURCE_DIR}/externals/picojson/)
if (NOT CMAKE_DISABLE_PRECOMPILE_HEADERS)
target_precompile_headers(cppcheck-gui PRIVATE precompiled.h)
endif()
Expand Down
36 changes: 21 additions & 15 deletions gui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@
#include <QVariant>
#include <Qt>

#include "json.h"

static const QString compile_commands_json("compile_commands.json");

static QString fromNativePath(const QString& p) {
Expand Down Expand Up @@ -1002,24 +1004,28 @@ Settings MainWindow::getCppcheckSettings()

addonFilePath.replace(QChar('\\'), QChar('/'));

// TODO: use picojson to generate the JSON
QString json;
json += "{ \"script\":\"" + addonFilePath + "\"";
picojson::value json;
json.set(picojson::object());
auto& obj = json.get<picojson::object>();
obj["script"] = picojson::value(addonFilePath.toStdString());
if (!pythonCmd.isEmpty())
json += ", \"python\":\"" + pythonCmd + "\"";
const QString misraFile = fromNativePath(mSettings->value(SETTINGS_MISRA_FILE).toString());
if (!isCppcheckPremium() && addon == "misra" && !misraFile.isEmpty()) {
QString arg;
if (misraFile.endsWith(".pdf", Qt::CaseInsensitive))
arg = "--misra-pdf=" + misraFile;
else
arg = "--rule-texts=" + misraFile;
json += ", \"args\":[\"" + arg + "\"]";
obj["python"] = picojson::value(pythonCmd.toStdString());

if (!isCppcheckPremium() && addon == "misra") {
const QString misraFile = fromNativePath(mSettings->value(SETTINGS_MISRA_FILE).toString());
if (!misraFile.isEmpty()) {
QString arg;
if (misraFile.endsWith(".pdf", Qt::CaseInsensitive))
arg = "--misra-pdf=" + misraFile;
else
arg = "--rule-texts=" + misraFile;
obj["args"] = picojson::value(arg.toStdString());
}
}
json += " }";
result.addons.emplace(json.toStdString());
const std::string json_str = json.serialize();
result.addons.emplace(json_str);
AddonInfo addonInfo;
addonInfo.getAddonInfo(json.toStdString(), result.exename);
addonInfo.getAddonInfo(json_str, result.exename);
result.addonInfos.emplace_back(std::move(addonInfo));
}

Expand Down

0 comments on commit 51d8b67

Please sign in to comment.