From 706b0874f50db5005c43775051c93fc05902279d Mon Sep 17 00:00:00 2001
From: Jochen Becher <jochen_becher@gmx.de>
Date: Sat, 8 Jul 2017 09:57:38 +0200
Subject: [PATCH] ModelEditor: Fix a number of trivial coverity issues

Change-Id: Ie61e017b993ac788284611fb40052e5f59521a56
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
---
 .../qmt/config/stereotypedefinitionparser.cpp |  6 ++--
 src/libs/modelinglib/qmt/config/token.cpp     |  4 ---
 src/libs/modelinglib/qmt/config/token.h       |  1 -
 .../qmt/diagram_controller/dupdatevisitor.cpp |  4 +--
 .../items/stereotypedisplayvisitor.cpp        |  2 +-
 .../modelinglib/qmt/model/mclassmember.cpp    | 29 -------------------
 src/libs/modelinglib/qmt/model/mclassmember.h |  4 ---
 .../qmt/model_controller/modelcontroller.cpp  |  6 ++--
 .../qmt/model_ui/sortedtreemodel.h            |  2 +-
 .../model_widgets_ui/propertiesviewmview.cpp  |  1 +
 src/libs/modelinglib/qmt/project/project.h    |  2 +-
 .../modelinglib/qmt/stereotype/iconshape.h    |  2 ++
 .../qmt/stereotype/stereotypeicon.cpp         | 15 ----------
 .../qmt/stereotype/stereotypeicon.h           | 17 +++++------
 14 files changed, 22 insertions(+), 73 deletions(-)

diff --git a/src/libs/modelinglib/qmt/config/stereotypedefinitionparser.cpp b/src/libs/modelinglib/qmt/config/stereotypedefinitionparser.cpp
index e9ea4e90c5a..130da5800bd 100644
--- a/src/libs/modelinglib/qmt/config/stereotypedefinitionparser.cpp
+++ b/src/libs/modelinglib/qmt/config/stereotypedefinitionparser.cpp
@@ -117,7 +117,7 @@ StereotypeDefinitionParserError::~StereotypeDefinitionParserError()
 class StereotypeDefinitionParser::StereotypeDefinitionParserPrivate
 {
 public:
-    TextScanner *m_scanner = 0;
+    TextScanner *m_scanner = nullptr;
 
 };
 
@@ -134,8 +134,8 @@ public:
     }
 
     int m_keyword = -1;
-    ShapeValueF::Unit m_unit;
-    ShapeValueF::Origin m_origin;
+    ShapeValueF::Unit m_unit = ShapeValueF::UnitAbsolute;
+    ShapeValueF::Origin m_origin = ShapeValueF::OriginCenter;
 };
 
 StereotypeDefinitionParser::StereotypeDefinitionParser(QObject *parent)
diff --git a/src/libs/modelinglib/qmt/config/token.cpp b/src/libs/modelinglib/qmt/config/token.cpp
index 9ef1ee2bd81..8c740f95be8 100644
--- a/src/libs/modelinglib/qmt/config/token.cpp
+++ b/src/libs/modelinglib/qmt/config/token.cpp
@@ -46,10 +46,6 @@ Token::Token(Token::Type type, int subtype, const QString &text, const SourcePos
 {
 }
 
-Token::~Token()
-{
-}
-
 void Token::setType(Token::Type type)
 {
     m_type = type;
diff --git a/src/libs/modelinglib/qmt/config/token.h b/src/libs/modelinglib/qmt/config/token.h
index 8672c0ea1d8..dd9888795ce 100644
--- a/src/libs/modelinglib/qmt/config/token.h
+++ b/src/libs/modelinglib/qmt/config/token.h
@@ -50,7 +50,6 @@ public:
     Token();
     Token(Type type, const QString &text, const SourcePos &sourcePos);
     Token(Type type, int subtype, const QString &text, const SourcePos &sourcePos);
-    ~Token();
 
     Type type() const { return m_type; }
     void setType(Type type);
diff --git a/src/libs/modelinglib/qmt/diagram_controller/dupdatevisitor.cpp b/src/libs/modelinglib/qmt/diagram_controller/dupdatevisitor.cpp
index 3454de26029..16cef093d26 100644
--- a/src/libs/modelinglib/qmt/diagram_controller/dupdatevisitor.cpp
+++ b/src/libs/modelinglib/qmt/diagram_controller/dupdatevisitor.cpp
@@ -154,7 +154,7 @@ void DUpdateVisitor::visitMRelation(const MRelation *relation)
     // TODO improve performance of MDiagram::findDiagramElement
     DObject *endAObject = dynamic_cast<DObject *>(m_diagram->findDiagramElement(drelation->endAUid()));
     if (!endAObject || relation->endAUid() != endAObject->modelUid()) {
-        isUpdating(true);
+        (void) isUpdating(true);
         endAObject = 0;
         // TODO use DiagramController::findDelegate (and improve performance of that method)
         foreach (DElement *diagramElement, m_diagram->diagramElements()) {
@@ -170,7 +170,7 @@ void DUpdateVisitor::visitMRelation(const MRelation *relation)
     }
     DObject *endBObject = dynamic_cast<DObject *>(m_diagram->findDiagramElement(drelation->endBUid()));
     if (!endBObject || relation->endBUid() != endBObject->modelUid()) {
-        isUpdating(true);
+        (void) isUpdating(true);
         endBObject = 0;
         // TODO use DiagramController::findDelegate
         foreach (DElement *diagramElement, m_diagram->diagramElements()) {
diff --git a/src/libs/modelinglib/qmt/diagram_scene/items/stereotypedisplayvisitor.cpp b/src/libs/modelinglib/qmt/diagram_scene/items/stereotypedisplayvisitor.cpp
index b5130477ad8..dae666a3eb5 100644
--- a/src/libs/modelinglib/qmt/diagram_scene/items/stereotypedisplayvisitor.cpp
+++ b/src/libs/modelinglib/qmt/diagram_scene/items/stereotypedisplayvisitor.cpp
@@ -121,7 +121,7 @@ void StereotypeDisplayVisitor::visitDClass(const DClass *klass)
     m_stereotypeIconElement = StereotypeIcon::ElementClass;
     MClass *modelKlass = m_modelController->findObject<MClass>(klass->modelUid());
     bool hasMembers = false;
-    if (!modelKlass->members().isEmpty() && klass->showAllMembers())
+    if (modelKlass && !modelKlass->members().isEmpty() && klass->showAllMembers())
         hasMembers = true;
     m_stereotypeSmartDisplay = hasMembers ? DObject::StereotypeDecoration : DObject::StereotypeIcon;
     visitDObject(klass);
diff --git a/src/libs/modelinglib/qmt/model/mclassmember.cpp b/src/libs/modelinglib/qmt/model/mclassmember.cpp
index 49bea877b7d..a8be5d128ff 100644
--- a/src/libs/modelinglib/qmt/model/mclassmember.cpp
+++ b/src/libs/modelinglib/qmt/model/mclassmember.cpp
@@ -33,35 +33,6 @@ MClassMember::MClassMember(MemberType memberType)
 {
 }
 
-MClassMember::MClassMember(const MClassMember &rhs)
-    : m_uid(rhs.m_uid),
-      m_stereotypes(rhs.m_stereotypes),
-      m_group(rhs.m_group),
-      m_declaration(rhs.m_declaration),
-      m_visibility(rhs.m_visibility),
-      m_memberType(rhs.m_memberType),
-      m_properties(rhs.m_properties)
-{
-}
-
-MClassMember::~MClassMember()
-{
-}
-
-MClassMember &MClassMember::operator=(const MClassMember &rhs)
-{
-    if (this != &rhs) {
-        m_uid = rhs.m_uid;
-        m_stereotypes = rhs.m_stereotypes;
-        m_group = rhs.m_group;
-        m_declaration = rhs.m_declaration;
-        m_visibility = rhs.m_visibility;
-        m_memberType = rhs.m_memberType;
-        m_properties = rhs.m_properties;
-    }
-    return *this;
-}
-
 void MClassMember::setUid(const Uid &uid)
 {
     m_uid = uid;
diff --git a/src/libs/modelinglib/qmt/model/mclassmember.h b/src/libs/modelinglib/qmt/model/mclassmember.h
index 99acb8d2ae1..d6ca6352b63 100644
--- a/src/libs/modelinglib/qmt/model/mclassmember.h
+++ b/src/libs/modelinglib/qmt/model/mclassmember.h
@@ -69,10 +69,6 @@ public:
     Q_DECLARE_FLAGS(Properties, Property)
 
     explicit MClassMember(MemberType memberType = MemberUndefined);
-    MClassMember(const MClassMember &rhs);
-    ~MClassMember();
-
-    MClassMember &operator=(const MClassMember &rhs);
 
     Uid uid() const { return m_uid; }
     void setUid(const Uid &uid);
diff --git a/src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp b/src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp
index 2b940f012a4..3b97b1e4606 100644
--- a/src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp
+++ b/src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp
@@ -505,9 +505,10 @@ private:
         QMT_CHECK(object);
         MObject *formerOwner = object->owner();
         int formerRow = formerOwner->children().indexOf(object);
+        MObject *newOwner = m_modelController->findObject(m_ownerKey);
+        QMT_CHECK(newOwner);
         emit m_modelController->beginMoveObject(formerRow, formerOwner);
         formerOwner->decontrolChild(object);
-        MObject *newOwner = m_modelController->findObject(m_ownerKey);
         newOwner->insertChild(m_indexOfElement, object);
         int newRow = m_indexOfElement;
         m_ownerKey = formerOwner->uid();
@@ -560,9 +561,10 @@ private:
         QMT_CHECK(relation);
         MObject *formerOwner = relation->owner();
         int formerRow = formerOwner->relations().indexOf(relation);
+        MObject *newOwner = m_modelController->findObject(m_ownerKey);
+        QMT_CHECK(newOwner);
         emit m_modelController->beginMoveRelation(formerRow, formerOwner);
         formerOwner->decontrolRelation(relation);
-        MObject *newOwner = m_modelController->findObject(m_ownerKey);
         newOwner->insertRelation(m_indexOfElement, relation);
         int newRow = m_indexOfElement;
         m_ownerKey = formerOwner->uid();
diff --git a/src/libs/modelinglib/qmt/model_ui/sortedtreemodel.h b/src/libs/modelinglib/qmt/model_ui/sortedtreemodel.h
index fed3721768c..25e3c55ea58 100644
--- a/src/libs/modelinglib/qmt/model_ui/sortedtreemodel.h
+++ b/src/libs/modelinglib/qmt/model_ui/sortedtreemodel.h
@@ -55,7 +55,7 @@ private:
 
     void startDelayedSortTimer();
 
-    TreeModel *m_treeModel;
+    TreeModel *m_treeModel = nullptr;
     QTimer m_delayedSortTimer;
 };
 
diff --git a/src/libs/modelinglib/qmt/model_widgets_ui/propertiesviewmview.cpp b/src/libs/modelinglib/qmt/model_widgets_ui/propertiesviewmview.cpp
index 62ceaad1a39..b87886e263c 100644
--- a/src/libs/modelinglib/qmt/model_widgets_ui/propertiesviewmview.cpp
+++ b/src/libs/modelinglib/qmt/model_widgets_ui/propertiesviewmview.cpp
@@ -639,6 +639,7 @@ void PropertiesView::MView::visitMInheritance(const MInheritance *inheritance)
     QMT_CHECK(derivedClass);
     setEndAName(tr("Derived class: %1").arg(derivedClass->name()));
     MObject *baseClass = m_propertiesView->modelController()->findObject(inheritance->base());
+    QMT_CHECK(baseClass);
     setEndBName(tr("Base class: %1").arg(baseClass->name()));
     visitMRelation(inheritance);
 }
diff --git a/src/libs/modelinglib/qmt/project/project.h b/src/libs/modelinglib/qmt/project/project.h
index b135769d875..d803789b87c 100644
--- a/src/libs/modelinglib/qmt/project/project.h
+++ b/src/libs/modelinglib/qmt/project/project.h
@@ -52,7 +52,7 @@ public:
 private:
     Uid m_uid;
     QString m_fileName;
-    MPackage *m_rootPackage;
+    MPackage *m_rootPackage = nullptr;
     QString m_configPath;
 };
 
diff --git a/src/libs/modelinglib/qmt/stereotype/iconshape.h b/src/libs/modelinglib/qmt/stereotype/iconshape.h
index 0efea797ff8..59148ee03ec 100644
--- a/src/libs/modelinglib/qmt/stereotype/iconshape.h
+++ b/src/libs/modelinglib/qmt/stereotype/iconshape.h
@@ -42,9 +42,11 @@ class QMT_EXPORT IconShape
 public:
     IconShape();
     IconShape(const IconShape &rhs);
+    IconShape(const IconShape &&) = delete;
     ~IconShape();
 
     IconShape &operator=(const IconShape &rhs);
+    IconShape &operator=(const IconShape &&) = delete;
 
     QSizeF size() const;
     void setSize(const QSizeF &size);
diff --git a/src/libs/modelinglib/qmt/stereotype/stereotypeicon.cpp b/src/libs/modelinglib/qmt/stereotype/stereotypeicon.cpp
index 885eeade532..d3cc9d606bb 100644
--- a/src/libs/modelinglib/qmt/stereotype/stereotypeicon.cpp
+++ b/src/libs/modelinglib/qmt/stereotype/stereotypeicon.cpp
@@ -27,21 +27,6 @@
 
 namespace qmt {
 
-StereotypeIcon::StereotypeIcon()
-    : m_width(100.0),
-      m_height(100.0),
-      m_minWidth(-1),
-      m_minHeight(-1),
-      m_sizeLock(LockNone),
-      m_display(DisplaySmart),
-      m_textAlignment(TextalignBelow)
-{
-}
-
-StereotypeIcon::~StereotypeIcon()
-{
-}
-
 void StereotypeIcon::setId(const QString &id)
 {
     m_id = id;
diff --git a/src/libs/modelinglib/qmt/stereotype/stereotypeicon.h b/src/libs/modelinglib/qmt/stereotype/stereotypeicon.h
index 354bd6f9ce4..acdeb3f07e8 100644
--- a/src/libs/modelinglib/qmt/stereotype/stereotypeicon.h
+++ b/src/libs/modelinglib/qmt/stereotype/stereotypeicon.h
@@ -67,9 +67,6 @@ public:
         TextalignNone
     };
 
-    StereotypeIcon();
-    ~StereotypeIcon();
-
     QString id() const { return m_id; }
     void setId(const QString &id);
     QString title() const;
@@ -104,13 +101,13 @@ private:
     QString m_title;
     QSet<Element> m_elements;
     QSet<QString> m_stereotypes;
-    qreal m_width;
-    qreal m_height;
-    qreal m_minWidth;
-    qreal m_minHeight;
-    SizeLock m_sizeLock;
-    Display m_display;
-    TextAlignment m_textAlignment;
+    qreal m_width = 100.0;
+    qreal m_height = 100.0;
+    qreal m_minWidth = -1;
+    qreal m_minHeight = -1;
+    SizeLock m_sizeLock = LockNone;
+    Display m_display = DisplaySmart;
+    TextAlignment m_textAlignment = TextalignBelow;
     QColor m_baseColor;
     IconShape m_iconShape;
 };
-- 
GitLab