diff --git a/common/dialogs/dialog_edit_library_tables.cpp b/common/dialogs/dialog_edit_library_tables.cpp
index b1d5359572..4929cc945f 100644
--- a/common/dialogs/dialog_edit_library_tables.cpp
+++ b/common/dialogs/dialog_edit_library_tables.cpp
@@ -29,6 +29,7 @@ DIALOG_EDIT_LIBRARY_TABLES::DIALOG_EDIT_LIBRARY_TABLES( wxWindow* aParent,
                      wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ),
         m_GlobalTableChanged( false ),
         m_ProjectTableChanged( false ),
+        m_infoBar( nullptr ),
         m_contentPanel( nullptr )
 {
     // Construction delayed until after panel is installed
diff --git a/common/dialogs/panel_plugin_settings.cpp b/common/dialogs/panel_plugin_settings.cpp
index 6a6179f7cb..ea45aa3a5b 100644
--- a/common/dialogs/panel_plugin_settings.cpp
+++ b/common/dialogs/panel_plugin_settings.cpp
@@ -28,7 +28,8 @@
 
 
 PANEL_PLUGIN_SETTINGS::PANEL_PLUGIN_SETTINGS( wxWindow* aParent ) :
-        PANEL_PLUGIN_SETTINGS_BASE( aParent )
+        PANEL_PLUGIN_SETTINGS_BASE( aParent ),
+        m_pythonInterpreterValid( false )
 {
     wxFont helpFont = KIUI::GetInfoFont( this ).Italic();
     m_stPythonStatus->SetFont( helpFont );
diff --git a/common/tool/embed_tool.cpp b/common/tool/embed_tool.cpp
index 48f7e93582..fb86bd1635 100644
--- a/common/tool/embed_tool.cpp
+++ b/common/tool/embed_tool.cpp
@@ -30,20 +30,21 @@
 
 
 EMBED_TOOL::EMBED_TOOL( const std::string& aName ) :
-        TOOL_INTERACTIVE( aName )
+        TOOL_INTERACTIVE( aName ),
+        m_files( nullptr )
 {
 }
 
 
 EMBED_TOOL::EMBED_TOOL() :
-        TOOL_INTERACTIVE( "common.Embed" )
+        TOOL_INTERACTIVE( "common.Embed" ),
+        m_files( nullptr )
 {
 }
 
 
 bool EMBED_TOOL::Init()
 {
-
     m_files = getModel<EDA_ITEM>()->GetEmbeddedFiles();
 
     return true;
@@ -53,7 +54,6 @@ bool EMBED_TOOL::Init()
 void EMBED_TOOL::Reset( RESET_REASON aReason )
 {
     m_files = getModel<EDA_ITEM>()->GetEmbeddedFiles();
-
 }
 
 int EMBED_TOOL::AddFile( const TOOL_EVENT& aEvent )
diff --git a/common/widgets/filter_combobox.cpp b/common/widgets/filter_combobox.cpp
index 239377128b..ddb8e8a065 100644
--- a/common/widgets/filter_combobox.cpp
+++ b/common/widgets/filter_combobox.cpp
@@ -388,7 +388,8 @@ void FILTER_COMBOPOPUP::doSetFocus( wxWindow* aWindow )
 
 FILTER_COMBOBOX::FILTER_COMBOBOX( wxWindow *parent, wxWindowID id, const wxPoint &pos,
                             const wxSize &size, long style ) :
-        wxComboCtrl( parent, id, wxEmptyString, pos, size, style|wxCB_READONLY|wxTE_PROCESS_ENTER )
+        wxComboCtrl( parent, id, wxEmptyString, pos, size, style|wxCB_READONLY|wxTE_PROCESS_ENTER ),
+        m_filterPopup( nullptr )
 {
     UseAltPopupWindow();
     Connect( wxEVT_CHAR_HOOK, wxKeyEventHandler( FILTER_COMBOBOX::onKeyDown ), nullptr, this );
diff --git a/eeschema/design_block_tree_model_adapter.cpp b/eeschema/design_block_tree_model_adapter.cpp
index 6b93ef68cf..e6d8c88dcb 100644
--- a/eeschema/design_block_tree_model_adapter.cpp
+++ b/eeschema/design_block_tree_model_adapter.cpp
@@ -46,7 +46,8 @@ DESIGN_BLOCK_TREE_MODEL_ADAPTER::DESIGN_BLOCK_TREE_MODEL_ADAPTER( EDA_BASE_FRAME
                                                                   LIB_TABLE*      aLibs ) :
         LIB_TREE_MODEL_ADAPTER( aParent, wxT( "pinned_design_block_libs" ),
                                 Kiface().KifaceSettings() ),
-        m_libs( (DESIGN_BLOCK_LIB_TABLE*) aLibs )
+        m_libs( (DESIGN_BLOCK_LIB_TABLE*) aLibs ),
+        m_frame( aParent )
 {
 }
 
diff --git a/eeschema/sch_connection.cpp b/eeschema/sch_connection.cpp
index 8732cc31b1..b7c50fee77 100644
--- a/eeschema/sch_connection.cpp
+++ b/eeschema/sch_connection.cpp
@@ -85,7 +85,8 @@ SCH_CONNECTION::SCH_CONNECTION( CONNECTION_GRAPH* aGraph ) :
 
 
 SCH_CONNECTION::SCH_CONNECTION( SCH_CONNECTION& aOther ) :
-        m_parent( nullptr )
+        m_parent( nullptr ),
+        m_driver( nullptr )
 {
     Reset();
     Clone( aOther );
diff --git a/eeschema/widgets/design_block_pane.cpp b/eeschema/widgets/design_block_pane.cpp
index 962c8d50af..0dee32a55f 100644
--- a/eeschema/widgets/design_block_pane.cpp
+++ b/eeschema/widgets/design_block_pane.cpp
@@ -131,7 +131,10 @@ void DESIGN_BLOCK_PANE::RefreshLibs()
 }
 
 
-FILEDLG_IMPORT_SHEET_CONTENTS::FILEDLG_IMPORT_SHEET_CONTENTS( EESCHEMA_SETTINGS* aSettings )
+FILEDLG_IMPORT_SHEET_CONTENTS::FILEDLG_IMPORT_SHEET_CONTENTS( EESCHEMA_SETTINGS* aSettings ) :
+    m_cbRepeatedPlacement( nullptr ),
+    m_cbPlaceAsSheet( nullptr ),
+    m_cbKeepAnnotations( nullptr )
 {
     wxASSERT( aSettings );
     m_settings = aSettings;
diff --git a/pcbnew/dialogs/dialog_create_array.cpp b/pcbnew/dialogs/dialog_create_array.cpp
index cbf906f56b..35dbb14107 100644
--- a/pcbnew/dialogs/dialog_create_array.cpp
+++ b/pcbnew/dialogs/dialog_create_array.cpp
@@ -43,77 +43,43 @@ struct CREATE_ARRAY_DIALOG_ENTRIES
      * Construct with some sensible defaults.
      * In future, this could be loaded from config?
      */
-    CREATE_ARRAY_DIALOG_ENTRIES() :
-            m_OptionsSet( true ),
-            m_GridNx( 5 ),
-            m_GridNy( 5 ),
-            m_GridDx( pcbIUScale.mmToIU( 2.54 ) ),
-            m_GridDy( pcbIUScale.mmToIU( 2.54 ) ),
-            m_GridOffsetX( 0 ),
-            m_GridOffsetY( 0 ),
-            m_GridStagger( 1 ),
-            m_GridStaggerRows( true ),
-            m_GridPositionCentreOnItems( true ),
-            m_GridNumberingAxis( 0 ),                // h then v
-            m_GridNumReverseAlt( false ),
-            m_GridNumStartSet( 1 ),                  // use specified start
-            m_Grid2dArrayNumbering( 0 ),             // linear numbering
-            m_GridPrimaryAxisScheme( 0 ),            // numeric
-            m_GridSecondaryAxisScheme( 0 ),          // numeric
-            m_GridPrimaryNumOffset( wxT( "1" ) ),    // numeric
-            m_GridSecondaryNumOffset( wxT( "1" ) ),  // numeric
-            m_GridPrimaryAxisStep( 1 ),
-            m_GridSecondaryAxisStep( 1 ),
-            m_CircCentreX( 0 ),
-            m_CircCentreY( 0 ),
-            m_CircAngle( ANGLE_90 ),
-            m_CircCount( 4 ),
-            m_CircNumStartSet( 1 ),                  // use specified start
-            m_GridCircNumScheme( 0 ),
-            m_CircNumberingOffset( wxT( "1" ) ),
-            m_CircNumberingStep( 1 ),
-            m_CircRotatationStep( false ),
-            m_ArrayTypeTab( 0 ),                     // start on grid view
-            m_FootprintKeepAnnotations( false ),
-            m_FootprintReannotate( true )            // Assign unique by default
-    {
-    }
+    CREATE_ARRAY_DIALOG_ENTRIES() {}
 
-    bool      m_OptionsSet;
+    bool     m_OptionsSet = true;
 
-    long     m_GridNx;
-    long     m_GridNy;
-    long     m_GridDx;
-    long     m_GridDy;
-    long     m_GridOffsetX;
-    long     m_GridOffsetY;
-    long     m_GridStagger;
-    bool     m_GridStaggerRows;
-    bool     m_GridPositionCentreOnItems;
-    long     m_GridNumberingAxis;
-    bool     m_GridNumReverseAlt;
-    long     m_GridNumStartSet;
-    long     m_Grid2dArrayNumbering;
-    long     m_GridPrimaryAxisScheme;
-    long     m_GridSecondaryAxisScheme;
-    wxString m_GridPrimaryNumOffset;
-    wxString m_GridSecondaryNumOffset;
-    long     m_GridPrimaryAxisStep;
-    long     m_GridSecondaryAxisStep;
+    long     m_GridNx                    = 5;
+    long     m_GridNy                    = 5;
+    long     m_GridDx                    = pcbIUScale.mmToIU( 2.54 );
+    long     m_GridDy                    = pcbIUScale.mmToIU( 2.54 );
+    long     m_GridOffsetX               = 0;
+    long     m_GridOffsetY               = 0;
+    long     m_GridStagger               = 1;
+    bool     m_GridStaggerRows           = true;
+    bool     m_GridPositionCentreOnItems = true;
+    long     m_GridNumberingAxis         = 0;           // h then v
+    bool     m_GridNumReverseAlt         = false;
+    long     m_GridNumStartSet           = 1;           // use specified start
+    long     m_Grid2dArrayNumbering      = 0;           // linear numbering
+    long     m_GridPrimaryAxisScheme     = 0;           // numeric
+    long     m_GridSecondaryAxisScheme   = 0;           // numeric
+    wxString m_GridPrimaryNumOffset      = wxT( "1" );  // numeric
+    wxString m_GridSecondaryNumOffset    = wxT( "1" );  // numeric
+    long     m_GridPrimaryAxisStep       = 1;
+    long     m_GridSecondaryAxisStep     = 1;
 
-    long      m_CircCentreX;
-    long      m_CircCentreY;
-    EDA_ANGLE m_CircAngle;
-    long      m_CircCount;
-    bool      m_CircFullCircle;
-    long      m_CircNumStartSet;
-    long      m_GridCircNumScheme;
-    wxString  m_CircNumberingOffset;
-    long      m_CircNumberingStep;
-    bool      m_CircRotatationStep;
-    long      m_ArrayTypeTab;
-    bool      m_FootprintKeepAnnotations;
-    bool      m_FootprintReannotate;
+    long      m_CircCentreX              = 0;
+    long      m_CircCentreY              = 0;
+    EDA_ANGLE m_CircAngle                = ANGLE_90;
+    long      m_CircCount                = 4;
+    bool      m_CircFullCircle           = 0;
+    long      m_CircNumStartSet          = 1;        // use specified start
+    long      m_GridCircNumScheme        = 0;
+    wxString  m_CircNumberingOffset      = wxT("1");
+    long      m_CircNumberingStep        = 1;
+    bool      m_CircRotatationStep       = false;
+    long      m_ArrayTypeTab             = 0;       // start on grid view
+    bool      m_FootprintKeepAnnotations = false;
+    bool      m_FootprintReannotate      = true;    // Assign unique by default
 };
 
 // Persistent options settings
diff --git a/pcbnew/dialogs/dialog_gendrill.cpp b/pcbnew/dialogs/dialog_gendrill.cpp
index 1e8cc6cbe9..afe541a9aa 100644
--- a/pcbnew/dialogs/dialog_gendrill.cpp
+++ b/pcbnew/dialogs/dialog_gendrill.cpp
@@ -104,20 +104,20 @@ DIALOG_GENDRILL::DIALOG_GENDRILL( PCB_EDIT_FRAME* aPcbEditFrame, JOB_EXPORT_PCB_
     m_buttonsSizer->Layout();
 
     SetReturnCode( 1 );
-
+    initDialog();
     GetSizer()->SetSizeHints( this );
 }
 
 
 // Static members of DIALOG_GENDRILL
-int DIALOG_GENDRILL::m_UnitDrillIsInch  = false;     // Only for Excellon format
-int DIALOG_GENDRILL::m_ZerosFormat      = EXCELLON_WRITER::DECIMAL_FORMAT;
-bool DIALOG_GENDRILL::m_MinimalHeader   = false;    // Only for Excellon format
-bool DIALOG_GENDRILL::m_Mirror          = false;    // Only for Excellon format
-bool DIALOG_GENDRILL::m_Merge_PTH_NPTH  = false;    // Only for Excellon format
-bool DIALOG_GENDRILL::m_GenerateMap     = false;
-int DIALOG_GENDRILL::m_mapFileType      = 4;        // The last choice in m_Choice_Drill_Map
-int DIALOG_GENDRILL::m_drillFileType    = 0;
+int  DIALOG_GENDRILL::m_UnitDrillIsInch  = false;     // Only for Excellon format
+int  DIALOG_GENDRILL::m_ZerosFormat      = EXCELLON_WRITER::DECIMAL_FORMAT;
+bool DIALOG_GENDRILL::m_MinimalHeader    = false;    // Only for Excellon format
+bool DIALOG_GENDRILL::m_Mirror           = false;    // Only for Excellon format
+bool DIALOG_GENDRILL::m_Merge_PTH_NPTH   = false;    // Only for Excellon format
+bool DIALOG_GENDRILL::m_GenerateMap      = false;
+int  DIALOG_GENDRILL::m_mapFileType      = 4;        // The last choice in m_Choice_Drill_Map
+int  DIALOG_GENDRILL::m_drillFileType    = 0;
 bool DIALOG_GENDRILL::m_UseRouteModeForOvalHoles = true;    // Use G00 route mode to "drill" oval holes
 
 DIALOG_GENDRILL::~DIALOG_GENDRILL()
diff --git a/pcbnew/dialogs/dialog_rule_area_properties.cpp b/pcbnew/dialogs/dialog_rule_area_properties.cpp
index 98737adef1..ea98941976 100644
--- a/pcbnew/dialogs/dialog_rule_area_properties.cpp
+++ b/pcbnew/dialogs/dialog_rule_area_properties.cpp
@@ -103,10 +103,16 @@ DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES( PCB_BASE_FRAME*   aPar
                                                           CONVERT_SETTINGS* aConvertSettings,
                                                           BOARD*            aBoard ) :
         DIALOG_RULE_AREA_PROPERTIES_BASE( aParent ),
-        m_board( aBoard ), m_outlineHatchPitch( aParent, m_stBorderHatchPitchText,
-                                                m_outlineHatchPitchCtrl, m_outlineHatchUnits ),
-        m_convertSettings( aConvertSettings ), m_rbCenterline( nullptr ),
-        m_rbBoundingHull( nullptr ), m_cbDeleteOriginals( nullptr ),
+        m_board( aBoard ),
+        m_outlineHatchPitch( aParent, m_stBorderHatchPitchText, m_outlineHatchPitchCtrl, m_outlineHatchUnits ),
+        m_convertSettings( aConvertSettings ),
+        m_rbCenterline( nullptr ),
+        m_rbBoundingHull( nullptr ),
+        m_gapLabel( nullptr ),
+        m_gapCtrl( nullptr ),
+        m_gapUnits( nullptr ),
+        m_gap( nullptr ),
+        m_cbDeleteOriginals( nullptr ),
         m_notFoundPlacementSource( false ),
         m_originalPlacementSourceType( RULE_AREA_PLACEMENT_SOURCE_TYPE::SHEETNAME ),
         m_lastPlacementSourceType( RULE_AREA_PLACEMENT_SOURCE_TYPE::SHEETNAME )
diff --git a/pcbnew/dialogs/dialog_set_offset.cpp b/pcbnew/dialogs/dialog_set_offset.cpp
index 9367cef5c5..cb433d1b32 100644
--- a/pcbnew/dialogs/dialog_set_offset.cpp
+++ b/pcbnew/dialogs/dialog_set_offset.cpp
@@ -39,7 +39,11 @@ DIALOG_SET_OFFSET::DIALOG_SET_OFFSET( PCB_BASE_FRAME& aParent, VECTOR2I& aOffset
         DIALOG_SET_OFFSET_BASE( &aParent ), m_clearToZero( aClearToZero ),
         m_originalOffset( aOffset ), m_updatedOffset( aOffset ),
         m_xOffset( &aParent, m_xLabel, m_xEntry, m_xUnit ),
-        m_yOffset( &aParent, m_yLabel, m_yEntry, m_yUnit )
+        m_yOffset( &aParent, m_yLabel, m_yEntry, m_yUnit ),
+        m_stateX( 0.0 ),
+        m_stateY( 0.0 ),
+        m_stateRadius( 0.0 ),
+        m_stateTheta( ANGLE_0 )
 {
     m_xOffset.SetCoordType( ORIGIN_TRANSFORMS::REL_X_COORD );
     m_yOffset.SetCoordType( ORIGIN_TRANSFORMS::REL_Y_COORD );
diff --git a/pcbnew/exporters/exporter_vrml.cpp b/pcbnew/exporters/exporter_vrml.cpp
index 66d793359d..015a9fbdac 100644
--- a/pcbnew/exporters/exporter_vrml.cpp
+++ b/pcbnew/exporters/exporter_vrml.cpp
@@ -106,6 +106,8 @@ EXPORTER_PCB_VRML::EXPORTER_PCB_VRML( BOARD* aBoard ) :
     m_precision = 6;
     m_WorldScale = 1.0;
     m_Cache3Dmodels = nullptr;
+    m_includeDNP = false;
+    m_includeUnspecified = false;
     m_UseInlineModelsInBrdfile = false;
     m_UseRelPathIn3DModelFilename = false;
     m_BoardToVrmlScale = pcbIUScale.MM_PER_IU;
diff --git a/pcbnew/pcb_io/altium/altium_parser_pcb.cpp b/pcbnew/pcb_io/altium/altium_parser_pcb.cpp
index bb30c6b470..3d1edcdadc 100644
--- a/pcbnew/pcb_io/altium/altium_parser_pcb.cpp
+++ b/pcbnew/pcb_io/altium/altium_parser_pcb.cpp
@@ -520,19 +520,6 @@ APOLYGON6::APOLYGON6( ALTIUM_BINARY_PARSER& aReader )
 
 ARULE6::ARULE6( ALTIUM_BINARY_PARSER& aReader )
 {
-    // Initialize all variables and make Coverity happy
-    minLimit                           = 0;
-    maxLimit                           = 0;
-    preferredWidth                     = 0;
-    soldermaskExpansion                = 0;
-    pastemaskExpansion                 = 0;
-    clearanceGap                       = 0;
-    planeclearanceClearance            = 0;
-    polygonconnectAirgapwidth          = 0;
-    polygonconnectReliefconductorwidth = 0;
-    polygonconnectReliefentries        = 0;
-    polygonconnectStyle                = ALTIUM_CONNECT_STYLE::UNKNOWN;
-
     aReader.Skip( 2 );
 
     std::map<wxString, wxString> props = aReader.ReadProperties();
diff --git a/pcbnew/pcb_io/altium/altium_parser_pcb.h b/pcbnew/pcb_io/altium/altium_parser_pcb.h
index d78fa5e098..215e8bf28b 100644
--- a/pcbnew/pcb_io/altium/altium_parser_pcb.h
+++ b/pcbnew/pcb_io/altium/altium_parser_pcb.h
@@ -498,7 +498,7 @@ struct APOLYGON6
 struct ARULE6
 {
     wxString name;
-    int      priority;
+    int      priority = 0;
 
     ALTIUM_RULE_KIND kind;
 
@@ -507,38 +507,38 @@ struct ARULE6
 
     // ALTIUM_RULE_KIND::CLEARANCE
     // ALTIUM_RULE_KIND::HOLE_TO_HOLE_CLEARANCE
-    int clearanceGap;
+    int clearanceGap = 0;
 
     // ALTIUM_RULE_KIND::WIDTH
     // ALTIUM_RULE_KIND::HOLE_SIZE
-    int minLimit;
-    int maxLimit;
+    int minLimit = 0;
+    int maxLimit = 0;
 
     // ALTIUM_RULE_KIND::WIDTH
-    int preferredWidth;
+    int preferredWidth = 0;
 
     // ALTIUM_RULE_KIND::ROUTING_VIAS
-    int width;
-    int minWidth;
-    int maxWidth;
-    int holeWidth;
-    int minHoleWidth;
-    int maxHoleWidth;
+    int width        = 0;
+    int minWidth     = 0;
+    int maxWidth     = 0;
+    int holeWidth    = 0;
+    int minHoleWidth = 0;
+    int maxHoleWidth = 0;
 
     // ALTIUM_RULE_KIND::PLANE_CLEARANCE
-    int planeclearanceClearance;
+    int planeclearanceClearance = 0;
 
     // ALTIUM_RULE_KIND::SOLDER_MASK_EXPANSION
-    int soldermaskExpansion;
+    int soldermaskExpansion = 0;
 
     // ALTIUM_RULE_KIND::PASTE_MASK_EXPANSION
-    int pastemaskExpansion;
+    int pastemaskExpansion = 0;
 
     // ALTIUM_RULE_KIND::POLYGON_CONNECT
-    int32_t              polygonconnectAirgapwidth;
-    int32_t              polygonconnectReliefconductorwidth;
-    int                  polygonconnectReliefentries;
-    ALTIUM_CONNECT_STYLE polygonconnectStyle;
+    int32_t              polygonconnectAirgapwidth          = 0;
+    int32_t              polygonconnectReliefconductorwidth = 0;
+    int                  polygonconnectReliefentries        = 0;
+    ALTIUM_CONNECT_STYLE polygonconnectStyle                = ALTIUM_CONNECT_STYLE::UNKNOWN;
 
     // TODO: implement different types of rules we need to parse
 
@@ -592,39 +592,39 @@ struct AARC6
 
 struct ACOMPONENTBODY6
 {
-    uint16_t             component;
+    uint16_t             component = 0;
 
     wxString             body_name;
-    int                  kind;
-    int                  subpolyindex;
-    int                  unionindex;
-    int                  arc_resolution;
-    bool                 is_shape_based;
-    int                  cavity_height;
-    int                  standoff_height;
-    int                  overall_height;
-    int                  body_projection;
-    int                  body_color_3d;
-    int                  body_opacity_3d;
+    int                  kind             = 0;
+    int                  subpolyindex     = 0;
+    int                  unionindex       = 0;
+    int                  arc_resolution   = 0;;
+    bool                 is_shape_based   = false;
+    int                  cavity_height    = 0;
+    int                  standoff_height  = 0;
+    int                  overall_height   = 0;
+    int                  body_projection  = 0;
+    int                  body_color_3d    = 0;
+    int                  body_opacity_3d  = 0;
     wxString             identifier;
     wxString             texture;
-    int                  texture_center_x;
-    int                  texture_center_y;
-    int                  texture_size_x;
-    int                  texture_size_y;
-    int                  texture_rotation;
+    int                  texture_center_x = 0;
+    int                  texture_center_y = 0;
+    int                  texture_size_x   = 0;
+    int                  texture_size_y   = 0;
+    int                  texture_rotation = 0;
 
     wxString             modelId;
     wxString             modelChecksum;
-    bool                 modelIsEmbedded;
+    bool                 modelIsEmbedded = false;
     wxString             modelName;
-    int                  modelType;
-    int                  modelSource;
-    int                  modelSnapCount;
+    int                  modelType       = 0;
+    int                  modelSource     = 0;
+    int                  modelSnapCount  = 0;
 
     VECTOR3D             modelPosition;
     VECTOR3D             modelRotation;
-    double               rotation;
+    double               rotation = 0.0;
 
     explicit ACOMPONENTBODY6( ALTIUM_BINARY_PARSER& aReader );
 };
@@ -686,28 +686,28 @@ struct APAD6
 
 struct AVIA6
 {
-    bool is_locked;
-    bool is_tent_top;
-    bool is_tent_bottom;
-    bool is_test_fab_top;
-    bool is_test_fab_bottom;
+    bool is_locked          = false;
+    bool is_tent_top        = false;
+    bool is_tent_bottom     = false;
+    bool is_test_fab_top    = false;
+    bool is_test_fab_bottom = false;
 
-    uint16_t net;
+    uint16_t net = 0;
 
     VECTOR2I position;
-    uint32_t pos_tolerance; // 2147483640 is N/A
-    uint32_t neg_tolerance; // 2147483640 is N/A
-    uint32_t diameter;
-    uint32_t holesize;
+    uint32_t pos_tolerance = 2147483640; // 2147483640 is N/A
+    uint32_t neg_tolerance = 2147483640; // 2147483640 is N/A
+    uint32_t diameter      = 0;
+    uint32_t holesize      = 0;
 
-    int32_t thermal_relief_airgap;
-    uint32_t thermal_relief_conductorcount;
-    uint32_t thermal_relief_conductorwidth;
+    int32_t  thermal_relief_airgap         = 0;
+    uint32_t thermal_relief_conductorcount = 0;
+    uint32_t thermal_relief_conductorwidth = 0;
 
-    int32_t soldermask_expansion_front;
-    int32_t soldermask_expansion_back;
-    bool    soldermask_expansion_manual;
-    bool    soldermask_expansion_linked;
+    int32_t soldermask_expansion_front  = 0;
+    int32_t soldermask_expansion_back   = 0;
+    bool    soldermask_expansion_manual = false;
+    bool    soldermask_expansion_linked = false;
 
     ALTIUM_LAYER    layer_start;
     ALTIUM_LAYER    layer_end;
@@ -752,36 +752,36 @@ struct ATEXT6
 
 
     ALTIUM_LAYER layer;
-    uint16_t     component;
+    uint16_t     component = 0;
 
     VECTOR2I             position;
-    uint32_t             height;
-    double               rotation;
-    uint32_t             strokewidth;
+    uint32_t             height       = 0;
+    double               rotation     = 0.0;
+    uint32_t             strokewidth  = 0;
     STROKE_FONT_TYPE     strokefonttype;
 
-    bool isBold;
-    bool isItalic;
-    bool isMirrored;
-    bool isInverted;
-    bool isInvertedRect;
-    bool isFrame;
-    bool isOffsetBorder;
-    bool isJustificationValid;
+    bool isBold               = false;
+    bool isItalic             = false;
+    bool isMirrored           = false;
+    bool isInverted           = false;
+    bool isInvertedRect       = false;
+    bool isFrame              = false;
+    bool isOffsetBorder       = false;
+    bool isJustificationValid = false;
 
-    uint32_t margin_border_width;
-    uint32_t textbox_rect_width;
-    uint32_t textbox_rect_height;
-    uint32_t text_offset_width;
+    uint32_t margin_border_width = 0;
+    uint32_t textbox_rect_width  = 0;
+    uint32_t textbox_rect_height = 0;
+    uint32_t text_offset_width   = 0;
 
     // Justification only applies when there is a text box size specified
     // Then, the text is justified within the box
     ALTIUM_TEXT_POSITION textbox_rect_justification;
 
-    uint32_t widestring_index;
+    uint32_t widestring_index = 0;
 
-    bool isComment;
-    bool isDesignator;
+    bool isComment    = false;
+    bool isDesignator = false;
 
     ALTIUM_TEXT_TYPE fonttype;
     wxString         fontname;
diff --git a/pcbnew/pcb_io/odbpp/odb_entity.h b/pcbnew/pcb_io/odbpp/odb_entity.h
index b306aacee3..83e9ba68be 100644
--- a/pcbnew/pcb_io/odbpp/odb_entity.h
+++ b/pcbnew/pcb_io/odbpp/odb_entity.h
@@ -85,8 +85,8 @@ public:
 
         uint32_t     m_rowNumber;
         wxString     m_layerName;
-        ODB_CONTEXT  m_context;
-        ODB_TYPE     m_type;
+        ODB_CONTEXT  m_context  = ODB_CONTEXT::BOARD;
+        ODB_TYPE     m_type     = ODB_TYPE::UNDEFINED;
         ODB_POLARITY m_polarity = ODB_POLARITY::POSITIVE;
 
         MATRIX_LAYER( uint32_t aRow, const wxString& aLayerName ) :
diff --git a/pcbnew/pcb_io/odbpp/odb_feature.h b/pcbnew/pcb_io/odbpp/odb_feature.h
index 1ef6b57c0e..598be78cea 100644
--- a/pcbnew/pcb_io/odbpp/odb_feature.h
+++ b/pcbnew/pcb_io/odbpp/odb_feature.h
@@ -336,7 +336,7 @@ public:
         LINE_TYPE m_type = LINE_TYPE::SEGMENT;
 
         VECTOR2I      m_center;
-        ODB_DIRECTION m_direction;
+        ODB_DIRECTION m_direction = ODB_DIRECTION::CW;
     };
 
     void AddPolygonHoles( const SHAPE_POLY_SET::POLYGON& aPolygon );
diff --git a/pcbnew/router/pns_logger.h b/pcbnew/router/pns_logger.h
index ed630f9869..9e3e5eaae1 100644
--- a/pcbnew/router/pns_logger.h
+++ b/pcbnew/router/pns_logger.h
@@ -61,7 +61,9 @@ public:
         SIZES_SETTINGS sizes;
         int layer;
 
-        EVENT_ENTRY() {}
+        EVENT_ENTRY() : layer( 0 )
+        {
+        }
 
         EVENT_ENTRY( const EVENT_ENTRY& aE ) :
                 p( aE.p ), type( aE.type ), uuids( aE.uuids ), sizes( aE.sizes ), layer( aE.layer )
diff --git a/pcbnew/router/pns_multi_dragger.h b/pcbnew/router/pns_multi_dragger.h
index dca9c9aa54..70f1f80596 100644
--- a/pcbnew/router/pns_multi_dragger.h
+++ b/pcbnew/router/pns_multi_dragger.h
@@ -108,7 +108,7 @@ public:
     PNS::DRAG_MODE Mode() const override;
 
 // Use case: we are dragging multiple tracks. The router erases a few of them, adds a few new ones. For the ease of use, it would be good for the tracks the be still selected when
-// the drag operation is completed. This method returns a set of the 'leader' (segments/arcs that have been selected for multi-fragging)  
+// the drag operation is completed. This method returns a set of the 'leader' (segments/arcs that have been selected for multi-fragging)
     virtual std::vector<PNS::ITEM*> GetLastCommittedLeaderSegments() override { return m_leaderSegments; };
 
     virtual bool GetForceMarkObstaclesMode( bool* aDragStatus ) const override
@@ -117,11 +117,11 @@ public:
         return false;
     }
 
-    
+
 
 private:
 
-    
+
 
 
     struct MDRAG_LINE
@@ -130,27 +130,28 @@ private:
         ITEM* leaderItem = nullptr;
         std::vector<PNS::ITEM*> originalLeaders;
 
-
         bool isStrict = false;
         bool isMidSeg = false;
         bool isCorner = false;
         bool isDraggable = false;
 
         int leaderSegIndex = -1;
-        bool cornerIsLast = false;
+        bool cornerIsLast  = false;
 
         PNS::LINE originalLine; // complete line (in a bundle) to drag
         PNS::LINE preDragLine; // complete line (in a bundle) to drag
         PNS::LINE draggedLine; // result of the drag calculation
         PNS::LINE preShoveLine; // result of the drag calculation
-        bool dragOK = false;
-        bool      isPrimaryLine = false; // when true, it's the "leader"/"primary one" - the one the cursor is attached to
-        bool clipDone = false;
-        int       offset; // distance between this line and the primary one (only applicable if the respective end segments are parallel)
+
+        bool dragOK        = false;
+        bool isPrimaryLine = false; // when true, it's the "leader"/"primary one" - the one the cursor is attached to
+        bool clipDone      = false;
+        int  offset        = 0; // distance between this line and the primary one (only applicable if the respective end segments are parallel)
         SEG midSeg;
 //        VECTOR2I dragAnchor;
-        int dragDist;
-        int cornerDistance, leaderSegDistance;
+        int dragDist          = 0;
+        int cornerDistance    = 0;
+        int leaderSegDistance = 0;
     };
 
     bool multidragMarkObstacles ( std::vector<MDRAG_LINE>& aCompletedLines );
@@ -174,7 +175,7 @@ private:
     VECTOR2I m_dragStartPoint;
     SEG m_guide;
     std::unique_ptr<SHOVE> m_shove;
-    
+
 };
 
 }
diff --git a/pcbnew/router/pns_shove.cpp b/pcbnew/router/pns_shove.cpp
index 324d2a40b0..2e030137e4 100644
--- a/pcbnew/router/pns_shove.cpp
+++ b/pcbnew/router/pns_shove.cpp
@@ -195,6 +195,7 @@ SHOVE::SHOVE( NODE* aWorld, ROUTER* aRouter ) :
     m_draggedVia = nullptr;
     m_iter = 0;
     m_multiLineMode = false;
+    m_headsModified = false;
     m_restrictSpringbackTagId = 0;
     m_springbackDoNotTouchNode = nullptr;
     m_defaultPolicy = SHP_SHOVE;
diff --git a/pcbnew/router/pns_walkaround.h b/pcbnew/router/pns_walkaround.h
index 5e619b342b..3ff1d8bb1a 100644
--- a/pcbnew/router/pns_walkaround.h
+++ b/pcbnew/router/pns_walkaround.h
@@ -36,7 +36,7 @@ namespace PNS {
 class WALKAROUND : public ALGO_BASE
 {
     static constexpr int MaxWalkPolicies = 3;
-    
+
 public:
     WALKAROUND( NODE* aWorld, ROUTER* aRouter ) :
         ALGO_BASE ( aRouter ),
@@ -47,6 +47,7 @@ public:
 
         // Initialize other members, to avoid uninitialized variables.
         m_iteration = 0;
+        m_initialLength = 0.0;
         m_forceCw = false;
         m_forceLongerPath = false;
         m_lengthLimitOn = true;
@@ -133,7 +134,7 @@ public:
     }
 
     void SetAllowedPolicies( std::vector<WALK_POLICY> aPolicies);
-    
+
 private:
     void start( const LINE& aInitialPath );
     bool singleStep();
diff --git a/pcbnew/specctra_import_export/specctra.cpp b/pcbnew/specctra_import_export/specctra.cpp
index df1d267d56..003441ef44 100644
--- a/pcbnew/specctra_import_export/specctra.cpp
+++ b/pcbnew/specctra_import_export/specctra.cpp
@@ -156,6 +156,11 @@ void SPECCTRA_DB::readTIME( time_t* time_stamp )
 
     struct tm   mytime;
 
+    mytime.tm_hour  = 0;
+    mytime.tm_min   = 0;
+    mytime.tm_sec   = 0;
+    mytime.tm_isdst = 0;   // useless param here.
+
     static const char time_toks[] = "<month> <day> <hour> : <minute> : <second> <year> or <month> <day> <hour>:<minute>:<second> <year>";
 
     static const char* months[] = {  // index 0 = Jan
@@ -236,7 +241,6 @@ void SPECCTRA_DB::readTIME( time_t* time_stamp )
         Expecting( time_toks );
 
     mytime.tm_year = atoi( CurText() ) - 1900;
-    mytime.tm_isdst = 0;   // useless param here.
 
     *time_stamp = mktime( &mytime );
 }
diff --git a/pcbnew/tools/array_tool.cpp b/pcbnew/tools/array_tool.cpp
index 4ac61c92b7..237bd60cd7 100644
--- a/pcbnew/tools/array_tool.cpp
+++ b/pcbnew/tools/array_tool.cpp
@@ -48,7 +48,8 @@ static void TransformItem( const ARRAY_OPTIONS& aArrOpts, int aIndex, BOARD_ITEM
 }
 
 
-ARRAY_TOOL::ARRAY_TOOL() : PCB_TOOL_BASE( "pcbnew.Array" )
+ARRAY_TOOL::ARRAY_TOOL() : PCB_TOOL_BASE( "pcbnew.Array" ),
+    m_dialog( nullptr )
 {
 }