File indexing completed on 2024-04-21 04:38:09

0001 /*
0002     SPDX-FileCopyrightText: 2018 Anton Anikin <anton@anikin.xyz>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef KDEVCLAZY_CHECKS_DB_H
0008 #define KDEVCLAZY_CHECKS_DB_H
0009 
0010 #include <QMap>
0011 #include <QUrl>
0012 
0013 namespace Clazy
0014 {
0015 
0016 struct Level;
0017 
0018 struct Check
0019 {
0020     const Level* level = nullptr;
0021     QString name;
0022     QString description;
0023 };
0024 
0025 struct Level
0026 {
0027     QString name;
0028     QString displayName;
0029     QString description;
0030 
0031     QMap<QString, Check*> checks;
0032 };
0033 
0034 class ChecksDB
0035 {
0036 public:
0037     explicit ChecksDB(const QUrl& docsPath);
0038     ~ChecksDB();
0039 
0040 public:
0041     bool isValid() const;
0042     QString error() const;
0043 
0044     const QMap<QString, Level*>& levels() const;
0045 
0046     const QMap<QString, Check*>& checks() const;
0047 
0048     static QString defaultChecks();
0049 
0050 private:
0051     Q_DISABLE_COPY(ChecksDB)
0052 
0053     QString m_error;
0054 
0055     QMap<QString, Check*> m_checks;
0056     QMap<QString, Level*> m_levels;
0057 };
0058 
0059 }
0060 
0061 #endif