Skip to content

Commit 2f0202d

Browse files
committed
GUI: More refactoring to use ErrorItem and ErrorLine.
1 parent 0e9d0e9 commit 2f0202d

File tree

6 files changed

+116
-80
lines changed

6 files changed

+116
-80
lines changed

gui/erroritem.h

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Cppcheck - A tool for static C/C++ code analysis
3+
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU General Public License
16+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17+
*/
18+
19+
#ifndef ERRORITEM_H
20+
#define ERRORITEM_H
21+
22+
#include <QString>
23+
#include <QStringList>
24+
25+
/// @addtogroup GUI
26+
/// @{
27+
28+
/**
29+
* @brief A class containing error data for one error.
30+
*/
31+
class ErrorItem
32+
{
33+
public:
34+
QString file;
35+
QStringList files;
36+
QStringList lines;
37+
QString id;
38+
QString severity;
39+
QString msg;
40+
};
41+
42+
/**
43+
* @brief A class containing error data for one shown error line.
44+
*/
45+
class ErrorLine
46+
{
47+
public:
48+
QString file;
49+
QString line;
50+
QString id;
51+
QString severity;
52+
QString msg;
53+
};
54+
55+
/// @}
56+
#endif // ERRORITEM_H

gui/gui.pro

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ HEADERS += mainwindow.h \
5050
applicationdialog.h \
5151
aboutdialog.h \
5252
common.h \
53+
erroritem.h \
5354
fileviewdialog.h \
5455
projectfile.h \
5556
report.h \

gui/report.h

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,11 @@
2323
#include <QString>
2424
#include <QStringList>
2525
#include <QFile>
26+
#include "erroritem.h"
2627

2728
/// @addtogroup GUI
2829
/// @{
2930

30-
/**
31-
* @brief A class containing error data.
32-
*/
33-
class ErrorItem
34-
{
35-
public:
36-
QStringList files;
37-
QStringList lines;
38-
QString id;
39-
QString severity;
40-
QString msg;
41-
};
42-
4331
/**
4432
* @brief A base class for reports.
4533
*/

gui/resultstree.cpp

Lines changed: 37 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <QMessageBox>
2626
#include <QFileInfo>
2727
#include <QClipboard>
28+
#include "erroritem.h"
2829
#include "resultstree.h"
2930
#include "xmlreport.h"
3031

@@ -67,77 +68,71 @@ QStandardItem *ResultsTree::CreateItem(const QString &name)
6768
return item;
6869
}
6970

70-
void ResultsTree::AddErrorItem(const QString &file,
71-
const QString &severity,
72-
const QString &message,
73-
const QStringList &files,
74-
const QVariantList &lines,
75-
const QString &id)
71+
void ResultsTree::AddErrorItem(const ErrorItem &item)
7672
{
77-
Q_UNUSED(file);
78-
79-
if (files.isEmpty())
73+
if (item.files.isEmpty())
8074
{
8175
return;
8276
}
8377

84-
QString realfile = StripPath(files[0], false);
78+
QString realfile = StripPath(item.files[0], false);
8579

8680
if (realfile.isEmpty())
8781
{
8882
realfile = tr("Undefined file");
8983
}
9084

91-
bool hide = !mShowTypes[SeverityToShowType(severity)];
85+
bool hide = !mShowTypes[SeverityToShowType(item.severity)];
9286

9387
//if there is at least one error that is not hidden, we have a visible error
9488
if (!hide)
9589
{
9690
mVisibleErrors = true;
9791
}
9892

93+
ErrorLine line;
94+
line.file = realfile;
95+
line.id = item.id;
96+
line.line = item.lines[0];
97+
line.msg = item.msg;
98+
line.severity = item.severity;
9999
//Create the base item for the error and ensure it has a proper
100100
//file item as a parent
101-
QStandardItem *item = AddBacktraceFiles(EnsureFileItem(files[0], hide),
102-
realfile,
103-
lines[0].toInt(),
104-
severity,
105-
message,
106-
hide,
107-
SeverityToIcon(severity));
101+
QStandardItem *stditem = AddBacktraceFiles(EnsureFileItem(line.file, hide),
102+
line,
103+
hide,
104+
SeverityToIcon(line.severity));
108105

109-
if (!item)
106+
if (!stditem)
110107
return;
111108

112109
//Add user data to that item
113110
QMap<QString, QVariant> data;
114-
data["severity"] = SeverityToShowType(severity);
115-
data["message"] = message;
116-
data["file"] = files[0];
117-
data["line"] = lines[0];
118-
data["id"] = id;
119-
item->setData(QVariant(data));
111+
data["severity"] = SeverityToShowType(line.severity);
112+
data["message"] = line.msg;
113+
data["file"] = line.file;
114+
data["line"] = line.line;
115+
data["id"] = line.id;
116+
stditem->setData(QVariant(data));
120117

121118
//Add backtrace files as children
122-
for (int i = 1; i < files.size() && i < lines.size(); i++)
119+
for (int i = 1; i < item.files.size() && i < item.lines.size(); i++)
123120
{
121+
line.file = item.files[i];
122+
line.line = item.lines[i];
124123
QStandardItem *child_item;
125-
126-
child_item = AddBacktraceFiles(item,
127-
StripPath(files[i], false),
128-
lines[i].toInt(),
129-
severity,
130-
message,
124+
child_item = AddBacktraceFiles(stditem,
125+
line,
131126
hide,
132127
":images/go-down.png");
133128

134129
//Add user data to that item
135130
QMap<QString, QVariant> child_data;
136-
child_data["severity"] = SeverityToShowType(severity);
137-
child_data["message"] = message;
138-
child_data["file"] = files[i];
139-
child_data["line"] = lines[i];
140-
child_data["id"] = id;
131+
child_data["severity"] = SeverityToShowType(line.severity);
132+
child_data["message"] = line.msg;
133+
child_data["file"] = line.file;
134+
child_data["line"] = line.line;
135+
child_data["id"] = line.id;
141136
child_item->setData(QVariant(child_data));
142137
}
143138

@@ -150,10 +145,7 @@ void ResultsTree::AddErrorItem(const QString &file,
150145
}
151146

152147
QStandardItem *ResultsTree::AddBacktraceFiles(QStandardItem *parent,
153-
const QString &file,
154-
const int line,
155-
const QString &severity,
156-
const QString &message,
148+
const ErrorLine &item,
157149
const bool hide,
158150
const QString &icon)
159151

@@ -164,12 +156,12 @@ QStandardItem *ResultsTree::AddBacktraceFiles(QStandardItem *parent,
164156
}
165157

166158
QList<QStandardItem*> list;
167-
list << CreateItem(file);
168-
list << CreateItem(tr(severity.toLatin1()));
169-
list << CreateItem(QString("%1").arg(line));
159+
list << CreateItem(item.file);
160+
list << CreateItem(tr(item.severity.toLatin1()));
161+
list << CreateItem(QString("%1").arg(item.line));
170162
//TODO message has parameter names so we'll need changes to the core
171163
//cppcheck so we can get proper translations
172-
list << CreateItem(tr(message.toLatin1()));
164+
list << CreateItem(tr(item.msg.toLatin1()));
173165

174166
// Check for duplicate rows and don't add them if found
175167
for (int i = 0; i < parent->rowCount(); i++)

gui/resultstree.h

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@
2525
#include <QStandardItem>
2626
#include <QSettings>
2727
#include <QContextMenuEvent>
28+
#include <QTextStream>
2829
#include "common.h"
2930
#include "applicationlist.h"
30-
#include <QTextStream>
3131

3232
class Report;
33+
class ErrorItem;
34+
class ErrorLine;
3335

3436
/// @addtogroup GUI
3537
/// @{
@@ -50,19 +52,9 @@ class ResultsTree : public QTreeView
5052
/**
5153
* @brief Add a new item to the tree
5254
*
53-
* @param file filename
54-
* @param severity error severity
55-
* @param message error message
56-
* @param files list of files affected by the error
57-
* @param lines list of file line numers affected by the error
58-
* @param id error id
55+
* @param item Error item data
5956
*/
60-
void AddErrorItem(const QString &file,
61-
const QString &severity,
62-
const QString &message,
63-
const QStringList &files,
64-
const QVariantList &lines,
65-
const QString &id);
57+
void AddErrorItem(const ErrorItem &item);
6658

6759
/**
6860
* @brief Clear all errors from the tree
@@ -224,19 +216,13 @@ protected slots:
224216
* @brief Add a new error item beneath a file or a backtrace item beneath an error
225217
*
226218
* @param parent Parent for the item. Either a file item or an error item
227-
* @param file Filename of the error
228-
* @param line Line numer
229-
* @param severity Error severity
230-
* @param message Error message
219+
* @param item Error line data
231220
* @param hide Should this be hidden (true) or shown (false)
232221
* @param icon Should a default backtrace item icon be added
233222
* @return newly created QStandardItem *
234223
*/
235224
QStandardItem *AddBacktraceFiles(QStandardItem *parent,
236-
const QString &file,
237-
const int line,
238-
const QString &severity,
239-
const QString &message,
225+
const ErrorLine &item,
240226
const bool hide,
241227
const QString &icon);
242228

gui/resultsview.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,20 @@ void ResultsView::Error(const QString &file,
7474
const QString &id)
7575
{
7676
mErrorsFound = true;
77-
mUI.mTree->AddErrorItem(file, severity, message, files, lines, id);
77+
ErrorItem item;
78+
item.file = file;
79+
item.files = files;
80+
item.id = id;
81+
item.msg = message;
82+
item.severity = severity;
83+
84+
QVariant line;
85+
foreach(line, lines)
86+
{
87+
item.lines.append(line.toString());
88+
}
89+
90+
mUI.mTree->AddErrorItem(item);
7891
emit GotResults();
7992
}
8093

0 commit comments

Comments
 (0)