diff --git a/src/encoding/encoder.hpp b/src/encoding/encoder.hpp
index a258d1e..f5f40ae 100644
--- a/src/encoding/encoder.hpp
+++ b/src/encoding/encoder.hpp
@@ -38,8 +38,8 @@
 public: // common interface between Encoder and Estimator
   /**
    * @brief Create instance of the encoder with the specified reserved sizes
-   * @param totalReserve  initial buffer size to reserve
-   * @param totalFromBack number of bytes to reserve for append* operations
+   * @param totalReserve    initial buffer size to reserve
+   * @param reserveFromBack number of bytes to reserve for append* operations
    */
   explicit
   Encoder(size_t totalReserve = 8800, size_t reserveFromBack = 400);
diff --git a/src/encoding/estimator.hpp b/src/encoding/estimator.hpp
index 19d6423..364f953 100644
--- a/src/encoding/estimator.hpp
+++ b/src/encoding/estimator.hpp
@@ -38,8 +38,8 @@
 public: // common interface between Encoder and Estimator
   /**
    * @brief Create instance of the estimator
-   * @param totalReserve  not used (for compatibility with the Encoder)
-   * @param totalFromBack not used (for compatibility with the Encoder)
+   * @param totalReserve    not used (for compatibility with the Encoder)
+   * @param reserveFromBack not used (for compatibility with the Encoder)
    */
   explicit
   Estimator(size_t totalReserve = 0, size_t reserveFromBack = 0);
diff --git a/src/interest.hpp b/src/interest.hpp
index 686f0a0..b87cd50 100644
--- a/src/interest.hpp
+++ b/src/interest.hpp
@@ -180,7 +180,7 @@
 
   /**
    * @brief Set the selected delegation
-   * @param delegation The index of the selected delegation
+   * @param delegationIndex The index of the selected delegation
    * @throw Error Link is not set.
    * @throw std::out_of_range @p delegationIndex is out of bound in Link.
    */
diff --git a/src/lp/nack.hpp b/src/lp/nack.hpp
index 9512749..5fb57da 100644
--- a/src/lp/nack.hpp
+++ b/src/lp/nack.hpp
@@ -35,7 +35,7 @@
 
 /**
  * \brief represents a Network NACK
- * \detail This type binds a NackHeader and an Interest, and is intended for use in network layer.
+ * \details This type binds a NackHeader and an Interest, and is intended for use in network layer.
  */
 class Nack : public TagHost
 {
@@ -109,4 +109,4 @@
 } // namespace lp
 } // namespace ndn
 
-#endif // NDN_CXX_LP_NACK_HPP
\ No newline at end of file
+#endif // NDN_CXX_LP_NACK_HPP
diff --git a/src/lp/packet.hpp b/src/lp/packet.hpp
index 0febb75..53b998d 100644
--- a/src/lp/packet.hpp
+++ b/src/lp/packet.hpp
@@ -67,7 +67,7 @@
 public: // field access
   /**
    * \return true if FIELD occurs one or more times
-   * \detail This is equivalent to count()>0
+   * \details This is equivalent to count() > 0
    */
   template<typename FIELD>
   bool
@@ -136,7 +136,7 @@
 
   /**
    * \brief remove all occurrences of FIELD, and add a FIELD with value
-   * \detail This equivalent to clear() followed by add(value)
+   * \details This equivalent to clear() followed by add(value)
    */
   template<typename FIELD>
   Packet&
diff --git a/src/management/nfd-control-parameters.hpp b/src/management/nfd-control-parameters.hpp
index ab287a5..93b2e41 100644
--- a/src/management/nfd-control-parameters.hpp
+++ b/src/management/nfd-control-parameters.hpp
@@ -72,7 +72,7 @@
  * @ingroup management
  * @brief represents parameters in a ControlCommand request or response
  * @sa http://redmine.named-data.net/projects/nfd/wiki/ControlCommand#ControlParameters
- * @detail This type is copyable because it's an abstraction of a TLV type.
+ * @details This type is copyable because it's an abstraction of a TLV type.
  */
 class ControlParameters : public ndn::mgmt::ControlParameters
 {
diff --git a/src/management/nfd-controller.hpp b/src/management/nfd-controller.hpp
index 8b08754..331810f 100644
--- a/src/management/nfd-controller.hpp
+++ b/src/management/nfd-controller.hpp
@@ -34,6 +34,7 @@
  * \defgroup management Management
  * \brief Classes and data structures to manage NDN forwarder
  */
+
 /**
  * \ingroup management
  * \brief NFD Management protocol - ControlCommand client
diff --git a/src/mgmt/status-dataset-context.hpp b/src/mgmt/status-dataset-context.hpp
index 3228346..45778ea 100644
--- a/src/mgmt/status-dataset-context.hpp
+++ b/src/mgmt/status-dataset-context.hpp
@@ -86,7 +86,7 @@
    *  This should be invoked when the incoming Interest is malformed.
    *  A producer-generated NACK will be returned to requester.
    *
-   *  \param content Content of producer-generated NACK
+   *  \param resp Content of producer-generated NACK
    */
   void
   reject(const ControlResponse& resp = ControlResponse().setCode(400));
diff --git a/src/name.hpp b/src/name.hpp
index 7e228b7..57a1fde 100644
--- a/src/name.hpp
+++ b/src/name.hpp
@@ -227,11 +227,11 @@
    *        if iStartComponent is negative, size()+iStartComponent is used instead
    * @param nComponents The number of components starting at iStartComponent.
    *                    Use npos to get the Partial Name until the end of this Name.
-   * @detail If iStartComponent is out of bounds and is negative, will return the components
-   *         starting in the beginning of the Name
-   *         If iStartComponent is out of bounds and is positive, will return the component "/"
-   *         If nComponents is out of bounds, will return the components until the end of
-   *         this Name
+   * @details If iStartComponent is out of bounds and is negative, returns the components
+   *          starting from the beginning of the Name.
+   *          If iStartComponent is out of bounds and is positive, returns the component "/".
+   *          If nComponents is out of bounds, returns the components until the end of
+   *          this Name
    * @return A new partial name
    */
   PartialName
diff --git a/src/security/identity.hpp b/src/security/identity.hpp
index 533bfc9..d77428d 100644
--- a/src/security/identity.hpp
+++ b/src/security/identity.hpp
@@ -76,8 +76,8 @@
   /**
    * @brief Get a key with id @keyId.
    *
-   * @param identityName The name for the identity to get.
-   * @throw Pib::Error if the identity does not exist.
+   * @param keyId The id of the key to get.
+   * @throw Pib::Error if the key does not exist.
    */
   Key
   getKey(const name::Component& keyId) const;
diff --git a/src/security/key-chain.hpp b/src/security/key-chain.hpp
index 7f16cd0..c9ed28c 100644
--- a/src/security/key-chain.hpp
+++ b/src/security/key-chain.hpp
@@ -132,8 +132,8 @@
    *
    * @sa  http://redmine.named-data.net/issues/2260
    *
-   * @param pibLocator
-   * @param tpmLocator
+   * @param pibLocator PIB locator
+   * @param tpmLocator TPM locator
    * @param allowReset if true, the PIB will be reset when the supplied tpmLocator
    *        mismatches the one in PIB
    */
@@ -778,7 +778,6 @@
   /**
    * @brief Prepare a SignatureInfo TLV according to signing information and return the signing key name
    *
-   * @param sigInfo The SignatureInfo to prepare.
    * @param params The signing parameters.
    * @return The signing key name and prepared SignatureInfo.
    * @throw Error when the requested signing method cannot be satisfied.
diff --git a/src/security/pib-impl.hpp b/src/security/pib-impl.hpp
index fae035e..080dc48 100644
--- a/src/security/pib-impl.hpp
+++ b/src/security/pib-impl.hpp
@@ -68,7 +68,7 @@
    * If the provided @p tpmLocator is different from the existing one, the
    * content in PIB will be cleaned up, otherwise nothing will be changed.
    *
-   * @param tmpLocator The name for the new tmpLocator
+   * @param tpmLocator The name for the new TPM locator
    */
   virtual void
   setTpmLocator(const std::string& tpmLocator) = 0;
diff --git a/src/security/pib-sqlite3.hpp b/src/security/pib-sqlite3.hpp
index 4e521eb..a9fabe9 100644
--- a/src/security/pib-sqlite3.hpp
+++ b/src/security/pib-sqlite3.hpp
@@ -66,7 +66,7 @@
    * If the provided @p tpmLocator is different from the existing one, the
    * content in PIB will be cleaned up, otherwise nothing will be changed.
    *
-   * @param tmpLocator The name for the new tmpLocator
+   * @param tpmLocator The name for the new TPM locator
    */
   virtual void
   setTpmLocator(const std::string& tpmLocator) NDN_CXX_DECL_FINAL;
diff --git a/src/security/pib.hpp b/src/security/pib.hpp
index 5d28edd..1fd2006 100644
--- a/src/security/pib.hpp
+++ b/src/security/pib.hpp
@@ -87,7 +87,7 @@
    * If the provided @p tpmLocator is different from the existing one, the
    * PIB will be reset, otherwise nothing will be changed.
    *
-   * @param tmpLocator The name for the new tmpLocator
+   * @param tpmLocator The name for the new TPM locator
    */
   void
   setTpmLocator(const std::string& tpmLocator);
diff --git a/src/security/public-key.hpp b/src/security/public-key.hpp
index e739717..3f90783 100644
--- a/src/security/public-key.hpp
+++ b/src/security/public-key.hpp
@@ -57,7 +57,7 @@
   PublicKey();
 
   /**
-   * @brief Create a new PublicKey from @param keyDerBuf in DER buffer
+   * @brief Create a new PublicKey from @p keyDerBuf in DER buffer
    *
    * @param keyDerBuf The pointer to the first byte of buffer containing DER of public key
    * @param keyDerSize Size of the buffer
diff --git a/src/security/sec-tpm-osx.cpp b/src/security/sec-tpm-osx.cpp
index 33a2c7f..04445c3 100644
--- a/src/security/sec-tpm-osx.cpp
+++ b/src/security/sec-tpm-osx.cpp
@@ -165,8 +165,6 @@
   /**
    * @brief Convert NDN name of a key to internal name of the key.
    *
-   * @param keyName
-   * @param keyClass
    * @return the internal key name
    */
   std::string
@@ -175,8 +173,6 @@
   /**
    * @brief Get key.
    *
-   * @param keyName
-   * @param keyClass
    * @returns pointer to the key
    */
   CFReleaser<SecKeychainItemRef>
@@ -185,7 +181,6 @@
   /**
    * @brief Convert keyType to MAC OS symmetric key key type
    *
-   * @param keyType
    * @returns MAC OS key type
    */
   CFTypeRef
@@ -194,7 +189,6 @@
   /**
    * @brief Convert keyType to MAC OS asymmetirc key type
    *
-   * @param keyType
    * @returns MAC OS key type
    */
   CFTypeRef
@@ -203,7 +197,6 @@
   /**
    * @brief Convert keyClass to MAC OS key class
    *
-   * @param keyClass
    * @returns MAC OS key class
    */
   CFTypeRef
@@ -212,7 +205,6 @@
   /**
    * @brief Convert digestAlgo to MAC OS algorithm id
    *
-   * @param digestAlgo
    * @returns MAC OS algorithm id
    */
   CFStringRef
@@ -221,7 +213,6 @@
   /**
    * @brief Get the digest size of the corresponding algorithm
    *
-   * @param digestAlgo
    * @return digest size
    */
   long
diff --git a/src/security/sec-tpm.hpp b/src/security/sec-tpm.hpp
index 514274c..6c27077 100644
--- a/src/security/sec-tpm.hpp
+++ b/src/security/sec-tpm.hpp
@@ -80,7 +80,7 @@
   resetTpmPassword() = 0;
 
   /**
-   * @brief Set inTerminal flag to @param inTerminal
+   * @brief Set inTerminal flag to @p inTerminal
    *
    * If the inTerminal flag is set, and password is not set, TPM may ask for password via terminal.
    * inTerminal flag is set by default.
@@ -233,7 +233,7 @@
   exportPrivateKeyPkcs5FromTpm(const Name& keyName, const std::string& password);
 
   /**
-   * @brief Import a private key in PKCS#5 formatted @param buffer of size @param bufferSize
+   * @brief Import a private key in PKCS#5 formatted buffer of size @p bufferSize
    *
    * Also recover the public key and installed it in TPM.
    *
@@ -263,7 +263,7 @@
   exportPrivateKeyPkcs8FromTpm(const Name& keyName) = 0;
 
   /**
-   * @brief Import a private key from PKCS#8 formatted @param buffer of size @param bufferSize
+   * @brief Import a private key from PKCS#8 formatted buffer of size @p bufferSize
    *
    * @param keyName    The private key name.
    * @param buffer     Pointer to the first byte of the buffer containing PKCS#8-encoded
@@ -275,7 +275,7 @@
   importPrivateKeyPkcs8IntoTpm(const Name& keyName, const uint8_t* buffer, size_t bufferSize) = 0;
 
   /**
-   * @brief Import a public key in PKCS#1 formatted @param buffer of size @param bufferSize
+   * @brief Import a public key in PKCS#1 formatted buffer of size @p bufferSize
    *
    * @param keyName    The public key name
    * @param buffer     Pointer to the first byte of the buffer containing PKCS#1-encoded
diff --git a/src/transport/transport.hpp b/src/transport/transport.hpp
index 0073eeb..663d50e 100644
--- a/src/transport/transport.hpp
+++ b/src/transport/transport.hpp
@@ -64,7 +64,7 @@
   close() = 0;
 
   /**
-   * @brief Send block of data from @param wire through the transport
+   * @brief Send block of data from @p wire through the transport
    *
    * @param wire A block of data to send
    */
diff --git a/src/util/regex/regex-component-matcher.hpp b/src/util/regex/regex-component-matcher.hpp
index 288f71f..08cefdb 100644
--- a/src/util/regex/regex-component-matcher.hpp
+++ b/src/util/regex/regex-component-matcher.hpp
@@ -47,7 +47,7 @@
   virtual
   ~RegexComponentMatcher()
   {
-  };
+  }
 
   virtual bool
   match(const Name& name, size_t offset, size_t len = 1);
@@ -55,7 +55,6 @@
 protected:
   /**
    * @brief Compile the regular expression to generate the more matchers when necessary
-   * @returns true if compiling succeeds
    */
   virtual void
   compile();
diff --git a/src/util/regex/regex-component-set-matcher.hpp b/src/util/regex/regex-component-set-matcher.hpp
index 39bb563..7bf5a5e 100644
--- a/src/util/regex/regex-component-set-matcher.hpp
+++ b/src/util/regex/regex-component-set-matcher.hpp
@@ -52,7 +52,6 @@
 protected:
   /**
    * @brief Compile the regular expression to generate the more matchers when necessary
-   * @returns true if compiling succeeds
    */
   virtual void
   compile();
diff --git a/src/util/regex/regex-matcher.hpp b/src/util/regex/regex-matcher.hpp
index 4dcaeb4..9b5d26f 100644
--- a/src/util/regex/regex-matcher.hpp
+++ b/src/util/regex/regex-matcher.hpp
@@ -83,7 +83,6 @@
 protected:
   /**
    * @brief Compile the regular expression to generate the more matchers when necessary
-   * @returns true if compiling succeeds
    */
   virtual void
   compile() = 0;
diff --git a/src/util/regex/regex-repeat-matcher.hpp b/src/util/regex/regex-repeat-matcher.hpp
index 4130637..3baaa46 100644
--- a/src/util/regex/regex-repeat-matcher.hpp
+++ b/src/util/regex/regex-repeat-matcher.hpp
@@ -50,7 +50,6 @@
 protected:
   /**
    * @brief Compile the regular expression to generate the more matchers when necessary
-   * @returns true if compiling succeeds
    */
   virtual void
   compile();
diff --git a/src/util/sqlite3-statement.hpp b/src/util/sqlite3-statement.hpp
index dbad1d2..82480d9 100644
--- a/src/util/sqlite3-statement.hpp
+++ b/src/util/sqlite3-statement.hpp
@@ -56,7 +56,7 @@
    *
    * @param index The binding position
    * @param value The pointer of the binding string
-   * @param value The size of the binding string
+   * @param size The size of the binding string
    * @param destructor SQLite3 destructor, e.g., SQLITE_TRANSIENT
    * @return SQLite result value.
    */
@@ -79,7 +79,7 @@
    *
    * @param index The binding position
    * @param value The pointer of the blob
-   * @param value The size of the blob
+   * @param size The size of the blob
    * @param destructor SQLite3 destructor, e.g., SQLITE_TRANSIENT
    * @return SQLite result value.
    */
