diff --git a/include/layer_ids.h b/include/layer_ids.h
index 02b889e7c8..3752dd8d5f 100644
--- a/include/layer_ids.h
+++ b/include/layer_ids.h
@@ -289,11 +289,15 @@ inline GAL_LAYER_ID operator+( const GAL_LAYER_ID& a, int b )
     return t;
 }
 
+
+/// @brief Wraps a std::bitset
 typedef std::bitset<GAL_LAYER_ID_COUNT> GAL_BASE_SET;
 
+
 /// Helper for storing and iterating over GAL_LAYER_IDs
 class GAL_SET : public GAL_BASE_SET
 {
+
 private:
     static constexpr int start = static_cast<int>( GAL_LAYER_ID_START );
 
diff --git a/include/netclass.h b/include/netclass.h
index 317aba4084..375c740d27 100644
--- a/include/netclass.h
+++ b/include/netclass.h
@@ -50,7 +50,7 @@ public:
 
     /**
      * Create a NETCLASS instance with \a aName.
-     *
+     * The units on the optional parameters are Internal Units (1 nm)
      * @param aName is the name of this new netclass.
      */
     NETCLASS( const wxString& aName );
@@ -123,7 +123,7 @@ protected:
     wxString    m_Name;                 ///< Name of the net class
     wxString    m_Description;          ///< what this NETCLASS is for.
 
-    /// The units on these parameters is Internal Units (1 nm)
+
 
     std::optional<int>    m_Clearance;            ///< clearance when routing
 
diff --git a/include/pcb_group.h b/include/pcb_group.h
index 2a11cef26f..28a4b65fe3 100644
--- a/include/pcb_group.h
+++ b/include/pcb_group.h
@@ -109,16 +109,16 @@ public:
     }
 #endif
 
-    ///< @copydoc EDA_ITEM::GetPosition
+    /// @copydoc EDA_ITEM::GetPosition
     VECTOR2I GetPosition() const override;
 
-    ///< @copydoc EDA_ITEM::SetPosition
+    /// @copydoc EDA_ITEM::SetPosition
     void SetPosition( const VECTOR2I& aNewpos ) override;
 
-    ///< @copydoc BOARD_ITEM::GetLayerSet
+    /// @copydoc BOARD_ITEM::GetLayerSet
     LSET GetLayerSet() const override;
 
-    ///< @copydoc BOARD_ITEM::SetLayer
+    /// @copydoc BOARD_ITEM::SetLayer
     void SetLayer( PCB_LAYER_ID aLayer ) override
     {
         wxFAIL_MSG( wxT( "groups don't support layer SetLayer" ) );
@@ -132,7 +132,7 @@ public:
 
     void SetLocked( bool aLocked ) override;
 
-    ///< @copydoc EDA_ITEM::Clone
+    /// @copydoc EDA_ITEM::Clone
     EDA_ITEM* Clone() const override;
 
     /*
@@ -145,45 +145,45 @@ public:
      */
     PCB_GROUP* DeepDuplicate() const;
 
-    ///< @copydoc BOARD_ITEM::IsOnLayer
+    /// @copydoc BOARD_ITEM::IsOnLayer
     bool IsOnLayer( PCB_LAYER_ID aLayer, bool aIncludeCourtyards = false ) const override;
 
-    ///< @copydoc EDA_ITEM::HitTest
+    /// @copydoc EDA_ITEM::HitTest
     bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
 
-    ///< @copydoc EDA_ITEM::HitTest
+    /// @copydoc EDA_ITEM::HitTest
     bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
 
-    ///< @copydoc EDA_ITEM::GetBoundingBox
+    /// @copydoc EDA_ITEM::GetBoundingBox
     const BOX2I GetBoundingBox() const override;
 
     // @copydoc BOARD_ITEM::GetEffectiveShape
     std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER,
                                               FLASHING aFlash = FLASHING::DEFAULT ) const override;
 
-    ///< @copydoc EDA_ITEM::Visit
+    /// @copydoc EDA_ITEM::Visit
     INSPECT_RESULT Visit( INSPECTOR aInspector, void* aTestData,
                           const std::vector<KICAD_T>& aScanTypes ) override;
 
-    ///< @copydoc VIEW_ITEM::ViewGetLayers
+    /// @copydoc VIEW_ITEM::ViewGetLayers
     void ViewGetLayers( int aLayers[], int& aCount ) const override;
 
-    ///< @copydoc VIEW_ITEM::ViewGetLOD
+    /// @copydoc VIEW_ITEM::ViewGetLOD
     double ViewGetLOD( int aLayer, KIGFX::VIEW* aView ) const override;
 
-    ///< @copydoc BOARD_ITEM::Move
+    /// @copydoc BOARD_ITEM::Move
     void Move( const VECTOR2I& aMoveVector ) override;
 
-    ///< @copydoc BOARD_ITEM::Rotate
+    /// @copydoc BOARD_ITEM::Rotate
     void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
 
-    ///< @copydoc BOARD_ITEM::Flip
+    /// @copydoc BOARD_ITEM::Flip
     void Flip( const VECTOR2I& aCentre, bool aFlipLeftRight ) override;
 
-    ///< @copydoc EDA_ITEM::GetItemDescription
+    /// @copydoc EDA_ITEM::GetItemDescription
     wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider ) const override;
 
-    ///< @copydoc EDA_ITEM::GetMenuImage
+    /// @copydoc EDA_ITEM::GetMenuImage
     BITMAPS GetMenuImage() const override;
 
 
@@ -202,7 +202,7 @@ public:
     }
 
 
-    ///< @copydoc EDA_ITEM::GetMsgPanelInfo
+    /// @copydoc EDA_ITEM::GetMsgPanelInfo
     void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
 
     /**
@@ -230,7 +230,7 @@ public:
     static bool IsGroupableType( KICAD_T aType );
 
 protected:
-    ///< @copydoc BOARD_ITEM::swapData
+    /// @copydoc BOARD_ITEM::swapData
     void swapData( BOARD_ITEM* aImage ) override;
 
 private:
diff --git a/include/plotters/plotter.h b/include/plotters/plotter.h
index 308b598547..22584b01fe 100644
--- a/include/plotters/plotter.h
+++ b/include/plotters/plotter.h
@@ -449,8 +449,8 @@ public:
     /**
      * Create a clickable hyperlink with a rectangular click area
      *
-     * @aBox is the rectangular click target
-     * @aDestinationURL is the target URL
+     * @param aBox is the rectangular click target
+     * @param aDestinationURL is the target URL
      */
     virtual void HyperlinkBox( const BOX2I& aBox, const wxString& aDestinationURL )
     {
@@ -460,8 +460,8 @@ public:
     /**
      * Create a clickable hyperlink menu with a rectangular click area
      *
-     * @aBox is the rectangular click target
-     * @aDestURLs is the list of target URLs for the menu
+     * @param aBox is the rectangular click target
+     * @param aDestURLs is the target URL
      */
     virtual void HyperlinkMenu( const BOX2I& aBox, const std::vector<wxString>& aDestURLs )
     {
@@ -471,8 +471,8 @@ public:
     /**
      * Create a bookmark to a symbol
      *
-     * @aBox is the bounding box of the symbol
-     * @aSymbolReference is the symbol schematic ref
+     * @param aBox is the rectangular click target
+     * @param aSymbolReference is the symbol schematic ref
      */
     virtual void Bookmark( const BOX2I& aBox, const wxString& aName,
                            const wxString& aGroupName = wxEmptyString )
diff --git a/libs/kimath/include/geometry/shape_line_chain.h b/libs/kimath/include/geometry/shape_line_chain.h
index 776d1dbf47..33c170b928 100644
--- a/libs/kimath/include/geometry/shape_line_chain.h
+++ b/libs/kimath/include/geometry/shape_line_chain.h
@@ -90,27 +90,27 @@ public:
      */
     struct INTERSECTION
     {
-        ///< Point of intersection between our and their.
+        /// Point of intersection between our and their.
         VECTOR2I p;
 
-        ///< Index of the intersecting corner/segment in the 'our' (== this) line.
+        /// Index of the intersecting corner/segment in the 'our' (== this) line.
         int index_our;
 
-        ///< index of the intersecting corner/segment in the 'their' (Intersect() method
-        ///< parameter) line.
+        /// index of the intersecting corner/segment in the 'their' (Intersect() method
+        /// parameter) line.
         int index_their;
 
-        ///< When true, the corner [index_our] of the 'our' line lies exactly on 'their' line.
+        /// When true, the corner [index_our] of the 'our' line lies exactly on 'their' line.
         bool is_corner_our;
 
-        ///< When true, the corner [index_their] of the 'their' line lies exactly on 'our' line.
-        ///< Note that when both is_corner_our and is_corner_their are set, the line chains touch
-        ///< with with corners.
+        /// When true, the corner [index_their] of the 'their' line lies exactly on 'our' line.
+        /// Note that when both is_corner_our and is_corner_their are set, the line chains touch
+        /// with with corners.
         bool is_corner_their;
 
-        ///< Auxiliary flag to avoid copying intersection info to intersection refining code,
-        ///< used by the refining code (e.g. hull handling stuff in the P&S) to reject false
-        ///< intersection points.
+        /// Auxiliary flag to avoid copying intersection info to intersection refining code,
+        /// used by the refining code (e.g. hull handling stuff in the P&S) to reject false
+        /// intersection points.
         bool valid;
 
         INTERSECTION() :
diff --git a/libs/kimath/include/geometry/shape_poly_set.h b/libs/kimath/include/geometry/shape_poly_set.h
index a015c333c9..e7d4e4b03f 100644
--- a/libs/kimath/include/geometry/shape_poly_set.h
+++ b/libs/kimath/include/geometry/shape_poly_set.h
@@ -64,9 +64,9 @@
 class SHAPE_POLY_SET : public SHAPE
 {
 public:
-    ///< represents a single polygon outline with holes. The first entry is the outline,
-    ///< the remaining (if any), are the holes
-    ///< N.B. SWIG only supports typedef, so avoid c++ 'using' keyword
+    /// represents a single polygon outline with holes. The first entry is the outline,
+    /// the remaining (if any), are the holes
+    /// N.B. SWIG only supports typedef, so avoid c++ 'using' keyword
     typedef std::vector<SHAPE_LINE_CHAIN> POLYGON;
 
     class TRIANGULATED_POLYGON
@@ -549,31 +549,31 @@ public:
 
     SHAPE_POLY_SET CloneDropTriangulation() const;
 
-    ///< Creates a new empty polygon in the set and returns its index
+    /// Creates a new empty polygon in the set and returns its index
     int NewOutline();
 
-    ///< Creates a new hole in a given outline
+    /// Creates a new hole in a given outline
     int NewHole( int aOutline = -1 );
 
-    ///< Adds a new outline to the set and returns its index
+    /// Adds a new outline to the set and returns its index
     int AddOutline( const SHAPE_LINE_CHAIN& aOutline );
 
-    ///< Adds a new hole to the given outline (default: last) and returns its index
+    /// Adds a new hole to the given outline (default: last) and returns its index
     int AddHole( const SHAPE_LINE_CHAIN& aHole, int aOutline = -1 );
 
-    ///< Return the area of this poly set
+    /// Return the area of this poly set
     double Area();
 
-    ///< Count the number of arc shapes present
+    /// Count the number of arc shapes present
     int ArcCount() const;
 
-    ///< Appends all the arcs in this polyset to \a aArcBuffer
+    /// Appends all the arcs in this polyset to \a aArcBuffer
     void GetArcs( std::vector<SHAPE_ARC>& aArcBuffer ) const;
 
-    ///< Removes all arc references from all the outlines and holes in the polyset
+    /// Removes all arc references from all the outlines and holes in the polyset
     void ClearArcs();
 
-    ///< Appends a vertex at the end of the given outline/hole (default: the last outline)
+    /// Appends a vertex at the end of the given outline/hole (default: the last outline)
     /**
      * Add a new vertex to the contour indexed by \p aOutline and \p aHole (defaults to the
      * outline of the last polygon).
@@ -588,10 +588,10 @@ public:
      */
     int Append( int x, int y, int aOutline = -1, int aHole = -1, bool aAllowDuplication = false );
 
-    ///< Merge polygons from two sets.
+    /// Merge polygons from two sets.
     void Append( const SHAPE_POLY_SET& aSet );
 
-    ///< Append a vertex at the end of the given outline/hole (default: the last outline)
+    /// Append a vertex at the end of the given outline/hole (default: the last outline)
     void Append( const VECTOR2I& aP, int aOutline = -1, int aHole = -1 );
 
     /**
@@ -615,13 +615,13 @@ public:
      */
     void InsertVertex( int aGlobalIndex, const VECTOR2I& aNewVertex );
 
-    ///< Return the index-th vertex in a given hole outline within a given outline
+    /// Return the index-th vertex in a given hole outline within a given outline
     const VECTOR2I& CVertex( int aIndex, int aOutline, int aHole ) const;
 
-    ///< Return the aGlobalIndex-th vertex in the poly set
+    /// Return the aGlobalIndex-th vertex in the poly set
     const VECTOR2I& CVertex( int aGlobalIndex ) const;
 
-    ///< Return the index-th vertex in a given hole outline within a given outline
+    /// Return the index-th vertex in a given hole outline within a given outline
     const VECTOR2I& CVertex( VERTEX_INDEX aIndex ) const;
 
     /**
@@ -654,20 +654,20 @@ public:
      */
     bool IsSelfIntersecting() const;
 
-    ///< Return the number of triangulated polygons
+    /// Return the number of triangulated polygons
     unsigned int TriangulatedPolyCount() const { return m_triangulatedPolys.size(); }
 
-    ///< Return the number of outlines in the set
+    /// Return the number of outlines in the set
     int OutlineCount() const { return m_polys.size(); }
 
-    ///< Return the number of vertices in a given outline/hole
+    /// Return the number of vertices in a given outline/hole
     int VertexCount( int aOutline = -1, int aHole = -1 ) const;
 
-    ///< Return the number of points in the shape poly set.
-    ///< mainly for reports
+    /// Return the number of points in the shape poly set.
+    /// mainly for reports
     int FullPointCount() const;
 
-    ///< Returns the number of holes in a given outline
+    /// Returns the number of holes in a given outline
     int HoleCount( int aOutline ) const
     {
         if( ( aOutline < 0 ) || ( aOutline >= (int) m_polys.size() )
@@ -679,7 +679,7 @@ public:
         return m_polys[aOutline].size() - 1;
     }
 
-    ///< Return the reference to aIndex-th outline in the set
+    /// Return the reference to aIndex-th outline in the set
     SHAPE_LINE_CHAIN& Outline( int aIndex )
     {
         return m_polys[aIndex][0];
@@ -706,13 +706,13 @@ public:
         return Subset( aPolygonIndex, aPolygonIndex + 1 );
     }
 
-    ///< Return the reference to aHole-th hole in the aIndex-th outline
+    /// Return the reference to aHole-th hole in the aIndex-th outline
     SHAPE_LINE_CHAIN& Hole( int aOutline, int aHole )
     {
         return m_polys[aOutline][aHole + 1];
     }
 
-    ///< Return the aIndex-th subpolygon in the set
+    /// Return the aIndex-th subpolygon in the set
     POLYGON& Polygon( int aIndex )
     {
         return m_polys[aIndex];
@@ -859,8 +859,8 @@ public:
         return iter;
     }
 
-    ///< Return an iterator object, for iterating between aFirst and aLast outline, with or
-    ///< without holes (default: without)
+    /// Return an iterator object, for iterating between aFirst and aLast outline, with or
+    /// without holes (default: without)
     SEGMENT_ITERATOR IterateSegments( int aFirst, int aLast, bool aIterateHoles = false )
     {
         SEGMENT_ITERATOR iter;
@@ -875,8 +875,8 @@ public:
         return iter;
     }
 
-    ///< Return an iterator object, for iterating between aFirst and aLast outline, with or
-    ///< without holes (default: without)
+    /// Return an iterator object, for iterating between aFirst and aLast outline, with or
+    /// without holes (default: without)
     CONST_SEGMENT_ITERATOR CIterateSegments( int aFirst, int aLast,
                                              bool aIterateHoles = false ) const
     {
@@ -892,49 +892,49 @@ public:
         return iter;
     }
 
-    ///< Return an iterator object, for iterating aPolygonIdx-th polygon edges.
+    /// Return an iterator object, for iterating aPolygonIdx-th polygon edges.
     SEGMENT_ITERATOR IterateSegments( int aPolygonIdx )
     {
         return IterateSegments( aPolygonIdx, aPolygonIdx );
     }
 
-    ///< Return an iterator object, for iterating aPolygonIdx-th polygon edges.
+    /// Return an iterator object, for iterating aPolygonIdx-th polygon edges.
     CONST_SEGMENT_ITERATOR CIterateSegments( int aPolygonIdx ) const
     {
         return CIterateSegments( aPolygonIdx, aPolygonIdx );
     }
 
-    ///< Return an iterator object, for all outlines in the set (no holes).
+    /// Return an iterator object, for all outlines in the set (no holes).
     SEGMENT_ITERATOR IterateSegments()
     {
         return IterateSegments( 0, OutlineCount() - 1 );
     }
 
-    ///< Returns an iterator object, for all outlines in the set (no holes)
+    /// Returns an iterator object, for all outlines in the set (no holes)
     CONST_SEGMENT_ITERATOR CIterateSegments() const
     {
         return CIterateSegments( 0, OutlineCount() - 1 );
     }
 
-    ///< Returns an iterator object, for all outlines in the set (with holes)
+    /// Returns an iterator object, for all outlines in the set (with holes)
     SEGMENT_ITERATOR IterateSegmentsWithHoles()
     {
         return IterateSegments( 0, OutlineCount() - 1, true );
     }
 
-    ///< Return an iterator object, for the \a aOutline-th outline in the set (with holes).
+    /// Return an iterator object, for the \a aOutline-th outline in the set (with holes).
     SEGMENT_ITERATOR IterateSegmentsWithHoles( int aOutline )
     {
         return IterateSegments( aOutline, aOutline, true );
     }
 
-    ///< Return an iterator object, for the \a aOutline-th outline in the set (with holes).
+    /// Return an iterator object, for the \a aOutline-th outline in the set (with holes).
     CONST_SEGMENT_ITERATOR CIterateSegmentsWithHoles() const
     {
         return CIterateSegments( 0, OutlineCount() - 1, true );
     }
 
-    ///< Return an iterator object, for the \a aOutline-th outline in the set (with holes).
+    /// Return an iterator object, for the \a aOutline-th outline in the set (with holes).
     CONST_SEGMENT_ITERATOR CIterateSegmentsWithHoles( int aOutline ) const
     {
         return CIterateSegments( aOutline, aOutline, true );
@@ -954,34 +954,35 @@ public:
         PM_STRICTLY_SIMPLE = false
     };
 
-    ///< Perform boolean polyset union
-    ///< For \a aFastMode meaning, see function booleanOp
+    /// Perform boolean polyset union
+    /// For \a aFastMode meaning, see function booleanOp
     void BooleanAdd( const SHAPE_POLY_SET& b, POLYGON_MODE aFastMode );
 
-    ///< Perform boolean polyset difference
-    ///< For \a aFastMode meaning, see function booleanOp
+    /// Perform boolean polyset difference
+    /// For \a aFastMode meaning, see function booleanOp
     void BooleanSubtract( const SHAPE_POLY_SET& b, POLYGON_MODE aFastMode );
 
-    ///< Perform boolean polyset intersection
-    ///< For \a aFastMode meaning, see function booleanOp
+    /// Perform boolean polyset intersection
+    /// For \a aFastMode meaning, see function booleanOp
     void BooleanIntersection( const SHAPE_POLY_SET& b, POLYGON_MODE aFastMode );
 
-    ///< Perform boolean polyset union between a and b, store the result in it self
-    ///< For \a aFastMode meaning, see function booleanOp
+    /// Perform boolean polyset union between a and b, store the result in it self
+    /// For \a aFastMode meaning, see function booleanOp
     void BooleanAdd( const SHAPE_POLY_SET& a, const SHAPE_POLY_SET& b,
                      POLYGON_MODE aFastMode );
 
-    ///< Perform boolean polyset difference between a and b, store the result in it self
-    ///< For \a aFastMode meaning, see function booleanOp
+    /// Perform boolean polyset difference between a and b, store the result in it self
+    /// For \a aFastMode meaning, see function booleanOp
     void BooleanSubtract( const SHAPE_POLY_SET& a, const SHAPE_POLY_SET& b,
                           POLYGON_MODE aFastMode );
 
-    ///< Perform boolean polyset intersection between a and b, store the result in it self
-    ///< For \a aFastMode meaning, see function booleanOp
+    /// Perform boolean polyset intersection between a and b, store the result in it self
+    /// For \a aFastMode meaning, see function booleanOp
     void BooleanIntersection( const SHAPE_POLY_SET& a, const SHAPE_POLY_SET& b,
                               POLYGON_MODE aFastMode );
 
-    enum CORNER_STRATEGY        ///< define how inflate transform build inflated polygon
+    /// define how inflate transform build inflated polygon
+    enum CORNER_STRATEGY
     {
         ALLOW_ACUTE_CORNERS,    ///< just inflate the polygon. Acute angles create spikes
         CHAMFER_ACUTE_CORNERS,  ///< Acute angles are chamfered
@@ -1025,24 +1026,24 @@ public:
      */
     void InflateWithLinkedHoles( int aFactor, int aCircleSegmentsCount, POLYGON_MODE aFastMode );
 
-    ///< Convert a set of polygons with holes to a single outline with "slits"/"fractures"
-    ///< connecting the outer ring to the inner holes
-    ///< For \a aFastMode meaning, see function booleanOp
+    /// Convert a set of polygons with holes to a single outline with "slits"/"fractures"
+    /// connecting the outer ring to the inner holes
+    /// For \a aFastMode meaning, see function booleanOp
     void Fracture( POLYGON_MODE aFastMode );
 
-    ///< Convert a single outline slitted ("fractured") polygon into a set ouf outlines
-    ///< with holes.
+    /// Convert a single outline slitted ("fractured") polygon into a set ouf outlines
+    /// with holes.
     void Unfracture( POLYGON_MODE aFastMode );
 
-    ///< Return true if the polygon set has any holes.
+    /// Return true if the polygon set has any holes.
     bool HasHoles() const;
 
-    ///< Return true if the polygon set has any holes that share a vertex.
+    /// Return true if the polygon set has any holes that share a vertex.
     bool HasTouchingHoles() const;
 
 
-    ///< Simplify the polyset (merges overlapping polys, eliminates degeneracy/self-intersections)
-    ///< For \a aFastMode meaning, see function booleanOp
+    /// Simplify the polyset (merges overlapping polys, eliminates degeneracy/self-intersections)
+    /// For \a aFastMode meaning, see function booleanOp
     void Simplify( POLYGON_MODE aFastMode );
 
     /**
@@ -1203,7 +1204,7 @@ public:
     bool Contains( const VECTOR2I& aP, int aSubpolyIndex = -1, int aAccuracy = 0,
                    bool aUseBBoxCaches = false ) const;
 
-    ///< Return true if the set is empty (no polygons at all)
+    /// Return true if the set is empty (no polygons at all)
     bool IsEmpty() const
     {
         return m_polys.empty();
@@ -1223,7 +1224,7 @@ public:
      */
     void RemoveVertex( VERTEX_INDEX aRelativeIndices );
 
-    ///< Remove all outlines & holes (clears) the polygon set.
+    /// Remove all outlines & holes (clears) the polygon set.
     void RemoveAllContours();
 
     /**
@@ -1261,14 +1262,14 @@ public:
      */
     void SetVertex( int aGlobalIndex, const VECTOR2I& aPos );
 
-    ///< Return total number of vertices stored in the set.
+    /// Return total number of vertices stored in the set.
     int TotalVertices() const;
 
-    ///< Delete \a aIdx-th polygon from the set.
+    /// Delete \a aIdx-th polygon from the set.
     void DeletePolygon( int aIdx );
 
-    ///< Delete \a aIdx-th polygon and its triangulation data from the set.
-    ///< If called with \a aUpdateHash false, caller must call UpdateTriangulationDataHash().
+    /// Delete \a aIdx-th polygon and its triangulation data from the set.
+    /// If called with \a aUpdateHash false, caller must call UpdateTriangulationDataHash().
     void DeletePolygonAndTriangulationData( int aIdx, bool aUpdateHash = true );
 
     void UpdateTriangulationDataHash();
@@ -1470,7 +1471,7 @@ private:
     POLYGON chamferFilletPolygon( CORNER_MODE aMode, unsigned int aDistance,
                                   int aIndex, int aErrorMax );
 
-    ///< Return true if the polygon set has any holes that touch share a vertex.
+    /// Return true if the polygon set has any holes that touch share a vertex.
     bool hasTouchingHoles( const POLYGON& aPoly ) const;
 
     MD5_HASH checksum() const;
diff --git a/libs/kimath/include/math/vector2d.h b/libs/kimath/include/math/vector2d.h
index 2e97702807..28c0cec5f2 100644
--- a/libs/kimath/include/math/vector2d.h
+++ b/libs/kimath/include/math/vector2d.h
@@ -41,8 +41,8 @@
 template <class T>
 struct VECTOR2_TRAITS
 {
-    ///< extended range/precision types used by operations involving multiple
-    ///< multiplications to prevent overflow.
+    /// extended range/precision types used by operations involving multiple
+    /// multiplications to prevent overflow.
     typedef T extended_type;
 };
 
diff --git a/libs/kimath/include/math/vector3.h b/libs/kimath/include/math/vector3.h
index 45be677b2f..5768cdcdb7 100644
--- a/libs/kimath/include/math/vector3.h
+++ b/libs/kimath/include/math/vector3.h
@@ -29,8 +29,8 @@
 template <class T>
 struct VECTOR3_TRAITS
 {
-    ///< extended range/precision types used by operations involving multiple
-    ///< multiplications to prevent overflow.
+    /// extended range/precision types used by operations involving multiple
+    /// multiplications to prevent overflow.
     typedef T extended_type;
 };
 
@@ -97,10 +97,10 @@ public:
      */
     VECTOR3<T> Normalize();
 
-    ///< Equality operator
+    /// Equality operator
     bool operator==( const VECTOR3<T>& aVector ) const;
 
-    ///< Not equality operator
+    /// Not equality operator
     bool operator!=( const VECTOR3<T>& aVector ) const;
 
     VECTOR3<T>& operator*=( T val );
diff --git a/pcbnew/connectivity/connectivity_data.h b/pcbnew/connectivity/connectivity_data.h
index ab0b09f11c..97f6397c92 100644
--- a/pcbnew/connectivity/connectivity_data.h
+++ b/pcbnew/connectivity/connectivity_data.h
@@ -91,8 +91,8 @@ struct RN_DYNAMIC_LINE
  */
 enum class PROPAGATE_MODE
 {
-    SKIP_CONFLICTS,     /// Clusters with conflicting drivers are not updated (default)
-    RESOLVE_CONFLICTS   /// Clusters with conflicting drivers are updated to the most popular net
+    SKIP_CONFLICTS,     ///< Clusters with conflicting drivers are not updated (default)
+    RESOLVE_CONFLICTS   ///< Clusters with conflicting drivers are updated to the most popular net
 };
 
 
diff --git a/pcbnew/footprint.h b/pcbnew/footprint.h
index 1d56b42240..8a7f103a24 100644
--- a/pcbnew/footprint.h
+++ b/pcbnew/footprint.h
@@ -496,7 +496,7 @@ public:
      */
     bool ResolveTextVar( wxString* token, int aDepth = 0 ) const;
 
-    ///< @copydoc EDA_ITEM::GetMsgPanelInfo
+    /// @copydoc EDA_ITEM::GetMsgPanelInfo
     void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
 
     bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
@@ -781,7 +781,7 @@ public:
 
     static double GetCoverageArea( const BOARD_ITEM* aItem, const GENERAL_COLLECTOR& aCollector );
 
-    ///< Return the initial comments block or NULL if none, without transfer of ownership.
+    /// Return the initial comments block or NULL if none, without transfer of ownership.
     const wxArrayString* GetInitialComments() const { return m_initial_comments; }
 
     /**
diff --git a/pcbnew/netinfo.h b/pcbnew/netinfo.h
index ae25316907..11d605c0ff 100644
--- a/pcbnew/netinfo.h
+++ b/pcbnew/netinfo.h
@@ -235,8 +235,8 @@ public:
      */
     int Translate( int aNetCode ) const;
 
-    ///< Wrapper class, so you can iterate through NETINFO_ITEM*s, not
-    ///< std::pair<int/wxString, NETINFO_ITEM*>
+    /// Wrapper class, so you can iterate through NETINFO_ITEM*s, not
+    /// std::pair<int/wxString, NETINFO_ITEM*>
     class iterator
     {
     public:
@@ -382,16 +382,16 @@ public:
     /// Return the netcode map, at least for python.
     const NETCODES_MAP& NetsByNetcode() const   { return m_netCodes; }
 
-    ///< Constant that holds the "unconnected net" number (typically 0)
-    ///< all items "connected" to this net are actually not connected items
+    /// Constant that holds the "unconnected net" number (typically 0)
+    /// all items "connected" to this net are actually not connected items
     static const int UNCONNECTED;
 
-    ///< Constant that forces initialization of a netinfo item to the NETINFO_ITEM ORPHANED
-    ///< (typically -1) when calling SetNetCode on board connected items.
+    /// Constant that forces initialization of a netinfo item to the NETINFO_ITEM ORPHANED
+    /// (typically -1) when calling SetNetCode on board connected items.
     static const int ORPHANED;
 
-    ///< NETINFO_ITEM meaning that there was no net assigned for an item, as there was no
-    ///< board storing net list available.
+    /// NETINFO_ITEM meaning that there was no net assigned for an item, as there was no
+    /// board storing net list available.
     static NETINFO_ITEM* OrphanedItem()
     {
         static NETINFO_ITEM* g_orphanedItem;
@@ -407,8 +407,8 @@ public:
 #endif
 
 #ifndef SWIG
-    ///< Wrapper class, so you can iterate through NETINFO_ITEM*s, not
-    ///< std::pair<int/wxString, NETINFO_ITEM*>
+    /// Wrapper class, so you can iterate through NETINFO_ITEM*s, not
+    /// std::pair<int/wxString, NETINFO_ITEM*>
     class iterator
     {
     public:
diff --git a/pcbnew/pad.h b/pcbnew/pad.h
index 1db1b9936a..33fcd9fa18 100644
--- a/pcbnew/pad.h
+++ b/pcbnew/pad.h
@@ -164,7 +164,7 @@ public:
     }
 
     /**
-     * @return true if this and \aOther represent a net-tie.
+     * @return true if this and \param aOther represent a net-tie.
      */
     bool SharesNetTieGroup( const PAD* aOther ) const;
 
@@ -677,11 +677,11 @@ public:
      */
     const BOX2I GetBoundingBox() const override;
 
-    ///< Set absolute coordinates.
+    /// Set absolute coordinates.
     void SetDrawCoord();
 
     //todo: Remove SetLocalCoord along with m_pos
-    ///< Set relative coordinates.
+    /// Set relative coordinates.
     void SetLocalCoord();
 
     /**
diff --git a/pcbnew/pcb_text.h b/pcbnew/pcb_text.h
index fc1701b36c..718ac736b5 100644
--- a/pcbnew/pcb_text.h
+++ b/pcbnew/pcb_text.h
@@ -118,9 +118,9 @@ public:
      * Function TransformTextToPolySet
      * Convert the text to a polygonSet describing the actual character strokes (one per segment).
      * Circles and arcs are approximated by segments.
-     * @aBuffer = SHAPE_POLY_SET to store the polygon corners
-     * @aClearance = the clearance around the text
-     * @aError = the maximum error to allow when approximating curves
+     * @param aBuffer SHAPE_POLY_SET to store the polygon corners
+     * @param aClearance the clearance around the text
+     * @param aError the maximum error to allow when approximating curves
      */
     void TransformTextToPolySet( SHAPE_POLY_SET& aBuffer, PCB_LAYER_ID aLayer, int aClearance,
                                  int aError, ERROR_LOC aErrorLoc ) const;
diff --git a/pcbnew/pcb_textbox.h b/pcbnew/pcb_textbox.h
index 0bd6f81e2d..ce46609640 100644
--- a/pcbnew/pcb_textbox.h
+++ b/pcbnew/pcb_textbox.h
@@ -113,9 +113,9 @@ public:
      * Convert the text to a polygonSet describing the actual character strokes (one per segment).
      * Used in 3D viewer
      * Circles and arcs are approximated by segments
-     * @aBuffer = SHAPE_POLY_SET to store the polygon corners
-     * @aClearance = the clearance around the text
-     * @aError = the maximum error to allow when approximating curves
+     * @param aBuffer = SHAPE_POLY_SET to store the polygon corners
+     * @param aClearance = the clearance around the text
+     * @param aError = the maximum error to allow when approximating curves
      */
     void TransformTextToPolySet( SHAPE_POLY_SET& aBuffer, PCB_LAYER_ID aLayer, int aClearance,
                                  int aError, ERROR_LOC aErrorLoc ) const;