forked from qt-creator/qt-creator
ClangTools: Move CSA's project settings into ClangToolsProjectSettings
Change-Id: I830c280e718aae416cd487eb5d02caf1e873f7c1 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -24,16 +24,24 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "clangtoolsprojectsettings.h"
|
||||
#include "clangtoolsdiagnostic.h"
|
||||
|
||||
#include <projectexplorer/session.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
namespace ClangTools {
|
||||
namespace Internal {
|
||||
|
||||
static const char SETTINGS_KEY_SELECTED_DIRS[] = "ClangTools.SelectedDirs";
|
||||
static const char SETTINGS_KEY_SELECTED_FILES[] = "ClangTools.SelectedFiles";
|
||||
static const char SETTINGS_KEY_SUPPRESSED_DIAGS[] = "ClangTools.SuppressedDiagnostics";
|
||||
static const char SETTINGS_KEY_SUPPRESSED_DIAGS_FILEPATH[] = "ClangTools.SuppressedDiagnosticFilePath";
|
||||
static const char SETTINGS_KEY_SUPPRESSED_DIAGS_MESSAGE[] = "ClangTools.SuppressedDiagnosticMessage";
|
||||
static const char SETTINGS_KEY_SUPPRESSED_DIAGS_CONTEXTKIND[] = "ClangTools.SuppressedDiagnosticContextKind";
|
||||
static const char SETTINGS_KEY_SUPPRESSED_DIAGS_CONTEXT[] = "ClangTools.SuppressedDiagnosticContext";
|
||||
static const char SETTINGS_KEY_SUPPRESSED_DIAGS_UNIQIFIER[] = "ClangTools.SuppressedDiagnosticUniquifier";
|
||||
|
||||
ClangToolsProjectSettings::ClangToolsProjectSettings(ProjectExplorer::Project *project)
|
||||
: m_project(project)
|
||||
@@ -50,6 +58,26 @@ ClangToolsProjectSettings::~ClangToolsProjectSettings()
|
||||
store();
|
||||
}
|
||||
|
||||
void ClangToolsProjectSettings::addSuppressedDiagnostic(const SuppressedDiagnostic &diag)
|
||||
{
|
||||
QTC_ASSERT(!m_suppressedDiagnostics.contains(diag), return);
|
||||
m_suppressedDiagnostics << diag;
|
||||
emit suppressedDiagnosticsChanged();
|
||||
}
|
||||
|
||||
void ClangToolsProjectSettings::removeSuppressedDiagnostic(const SuppressedDiagnostic &diag)
|
||||
{
|
||||
const bool wasPresent = m_suppressedDiagnostics.removeOne(diag);
|
||||
QTC_ASSERT(wasPresent, return);
|
||||
emit suppressedDiagnosticsChanged();
|
||||
}
|
||||
|
||||
void ClangToolsProjectSettings::removeAllSuppressedDiagnostics()
|
||||
{
|
||||
m_suppressedDiagnostics.clear();
|
||||
emit suppressedDiagnosticsChanged();
|
||||
}
|
||||
|
||||
void ClangToolsProjectSettings::load()
|
||||
{
|
||||
auto toFileName = [](const QString &s) { return Utils::FileName::fromString(s); };
|
||||
@@ -59,6 +87,30 @@ void ClangToolsProjectSettings::load()
|
||||
|
||||
const QStringList files = m_project->namedSettings(SETTINGS_KEY_SELECTED_FILES).toStringList();
|
||||
m_selectedFiles = Utils::transform<QSet>(files, toFileName);
|
||||
|
||||
const QVariantList list = m_project->namedSettings(SETTINGS_KEY_SUPPRESSED_DIAGS).toList();
|
||||
foreach (const QVariant &v, list) {
|
||||
const QVariantMap diag = v.toMap();
|
||||
const QString fp = diag.value(SETTINGS_KEY_SUPPRESSED_DIAGS_FILEPATH).toString();
|
||||
if (fp.isEmpty())
|
||||
continue;
|
||||
const QString message = diag.value(SETTINGS_KEY_SUPPRESSED_DIAGS_MESSAGE).toString();
|
||||
if (message.isEmpty())
|
||||
continue;
|
||||
Utils::FileName fullPath = Utils::FileName::fromString(fp);
|
||||
if (fullPath.toFileInfo().isRelative()) {
|
||||
fullPath = m_project->projectDirectory();
|
||||
fullPath.appendPath(fp);
|
||||
}
|
||||
if (!fullPath.exists())
|
||||
continue;
|
||||
const QString contextKind = diag.value(SETTINGS_KEY_SUPPRESSED_DIAGS_CONTEXTKIND).toString();
|
||||
const QString context = diag.value(SETTINGS_KEY_SUPPRESSED_DIAGS_CONTEXT).toString();
|
||||
const int uniquifier = diag.value(SETTINGS_KEY_SUPPRESSED_DIAGS_UNIQIFIER).toInt();
|
||||
m_suppressedDiagnostics << SuppressedDiagnostic(Utils::FileName::fromString(fp), message,
|
||||
contextKind, context, uniquifier);
|
||||
}
|
||||
emit suppressedDiagnosticsChanged();
|
||||
}
|
||||
|
||||
void ClangToolsProjectSettings::store()
|
||||
@@ -68,6 +120,18 @@ void ClangToolsProjectSettings::store()
|
||||
|
||||
const QStringList files = Utils::transform(m_selectedFiles.toList(), &Utils::FileName::toString);
|
||||
m_project->setNamedSettings(SETTINGS_KEY_SELECTED_FILES, files);
|
||||
|
||||
QVariantList list;
|
||||
foreach (const SuppressedDiagnostic &diag, m_suppressedDiagnostics) {
|
||||
QVariantMap diagMap;
|
||||
diagMap.insert(SETTINGS_KEY_SUPPRESSED_DIAGS_FILEPATH, diag.filePath.toString());
|
||||
diagMap.insert(SETTINGS_KEY_SUPPRESSED_DIAGS_MESSAGE, diag.description);
|
||||
diagMap.insert(SETTINGS_KEY_SUPPRESSED_DIAGS_CONTEXTKIND, diag.contextKind);
|
||||
diagMap.insert(SETTINGS_KEY_SUPPRESSED_DIAGS_CONTEXT, diag.context);
|
||||
diagMap.insert(SETTINGS_KEY_SUPPRESSED_DIAGS_UNIQIFIER, diag.uniquifier);
|
||||
list << diagMap;
|
||||
}
|
||||
m_project->setNamedSettings(SETTINGS_KEY_SUPPRESSED_DIAGS, list);
|
||||
}
|
||||
|
||||
ClangToolsProjectSettingsManager::ClangToolsProjectSettingsManager()
|
||||
@@ -93,5 +157,14 @@ void ClangToolsProjectSettingsManager::handleProjectToBeRemoved(ProjectExplorer:
|
||||
|
||||
ClangToolsProjectSettingsManager::SettingsMap ClangToolsProjectSettingsManager::m_settings;
|
||||
|
||||
SuppressedDiagnostic::SuppressedDiagnostic(const Diagnostic &diag)
|
||||
: filePath(Utils::FileName::fromString(diag.location.filePath))
|
||||
, description(diag.description)
|
||||
, contextKind(diag.issueContextKind)
|
||||
, context(diag.issueContext)
|
||||
, uniquifier(diag.explainingSteps.count())
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClangTools
|
||||
|
||||
Reference in New Issue
Block a user