diff --git a/src/data_query.hpp b/src/data_query.hpp
index 7a54a33..e7b0c03 100644
--- a/src/data_query.hpp
+++ b/src/data_query.hpp
@@ -27,7 +27,7 @@
      *  \param listPath Path to the list (ending with a list_)
      *  \return A vector of maps, which represent the instances. The map is keyed by the name of the list key. The values in the map, are values of the list keys.
      */
-    std::vector<ListInstance> listKeys(const dataPath_& listPath) const;
+    [[nodiscard]] std::vector<ListInstance> listKeys(const dataPath_& listPath) const;
 
 private:
     DatastoreAccess& m_datastore;
diff --git a/src/datastore_access.hpp b/src/datastore_access.hpp
index 5a9cdd1..8ff7658 100644
--- a/src/datastore_access.hpp
+++ b/src/datastore_access.hpp
@@ -30,7 +30,7 @@
 public:
     DatastoreException(const std::vector<DatastoreError>& errors);
     ~DatastoreException() override = default;
-    const char* what() const noexcept override;
+    [[nodiscard]] const char* what() const noexcept override;
 
 private:
     std::string m_what;
@@ -44,7 +44,7 @@
 public:
     using Tree = std::vector<std::pair<std::string, leaf_data_>>;
     virtual ~DatastoreAccess() = 0;
-    virtual Tree getItems(const std::string& path) const = 0;
+    [[nodiscard]] virtual Tree getItems(const std::string& path) const = 0;
     virtual void setLeaf(const std::string& path, leaf_data_ value) = 0;
     virtual void createItem(const std::string& path) = 0;
     virtual void deleteItem(const std::string& path) = 0;
@@ -56,7 +56,7 @@
     virtual void commitChanges() = 0;
     virtual void discardChanges() = 0;
     virtual void copyConfig(const Datastore source, const Datastore destination) = 0;
-    virtual std::string dump(const DataFormat format) const = 0;
+    [[nodiscard]] virtual std::string dump(const DataFormat format) const = 0;
 
 private:
     friend class DataQuery;
diff --git a/src/interpreter.cpp b/src/interpreter.cpp
index 85833f1..cd84983 100644
--- a/src/interpreter.cpp
+++ b/src/interpreter.cpp
@@ -259,7 +259,7 @@
 
 private:
     template <typename PathType>
-    ReturnType impl(const PathType& suffix) const
+    [[nodiscard]] ReturnType impl(const PathType& suffix) const
     {
         PathType res = [this] {
             if constexpr (std::is_same<PathType, schemaPath_>()) {
diff --git a/src/interpreter.hpp b/src/interpreter.hpp
index 4b4056e..543fb2e 100644
--- a/src/interpreter.hpp
+++ b/src/interpreter.hpp
@@ -31,13 +31,13 @@
     void operator()(const dump_& dump) const;
 
 private:
-    std::string buildTypeInfo(const std::string& path) const;
+    [[nodiscard]] std::string buildTypeInfo(const std::string& path) const;
 
     template <typename PathType>
     boost::variant<dataPath_, schemaPath_, module_> toCanonicalPath(const boost::optional<PathType>& path) const;
 
     template <typename PathType>
-    boost::variant<dataPath_, schemaPath_, module_> toCanonicalPath(const PathType& path) const;
+    [[nodiscard]] boost::variant<dataPath_, schemaPath_, module_> toCanonicalPath(const PathType& path) const;
 
     Parser& m_parser;
     DatastoreAccess& m_datastore;
diff --git a/src/netconf-client.hpp b/src/netconf-client.hpp
index 2db21c9..5949704 100644
--- a/src/netconf-client.hpp
+++ b/src/netconf-client.hpp
@@ -33,7 +33,7 @@
     static std::unique_ptr<Session> connectPubkey(const std::string& host, const uint16_t port, const std::string& user, const std::string& pubPath, const std::string& privPath);
     static std::unique_ptr<Session> connectKbdInteractive(const std::string& host, const uint16_t port, const std::string& user, const KbdInteractiveCb& callback);
     static std::unique_ptr<Session> connectSocket(const std::string& path);
-    std::vector<std::string_view> capabilities() const;
+    [[nodiscard]] std::vector<std::string_view> capabilities() const;
     std::shared_ptr<libyang::Data_Node> getConfig(const NC_DATASTORE datastore,
                                                   const std::optional<const std::string> filter = std::nullopt); // TODO: arguments...
     std::shared_ptr<libyang::Data_Node> get(const std::optional<std::string>& filter = std::nullopt);
diff --git a/src/netconf_access.hpp b/src/netconf_access.hpp
index d9830bd..586840f 100644
--- a/src/netconf_access.hpp
+++ b/src/netconf_access.hpp
@@ -33,7 +33,7 @@
     NetconfAccess(const std::string& socketPath);
     NetconfAccess(std::unique_ptr<libnetconf::client::Session>&& session);
     ~NetconfAccess() override;
-    Tree getItems(const std::string& path) const override;
+    [[nodiscard]] Tree getItems(const std::string& path) const override;
     void setLeaf(const std::string& path, leaf_data_ value) override;
     void createItem(const std::string& path) override;
     void deleteItem(const std::string& path) override;
@@ -45,7 +45,7 @@
 
     std::shared_ptr<Schema> schema() override;
 
-    std::string dump(const DataFormat format) const override;
+    [[nodiscard]] std::string dump(const DataFormat format) const override;
 
 private:
     std::vector<ListInstance> listInstances(const std::string& path) override;
diff --git a/src/parser.hpp b/src/parser.hpp
index 1e8cdbb..052d5a9 100644
--- a/src/parser.hpp
+++ b/src/parser.hpp
@@ -36,7 +36,7 @@
     Parser(const std::shared_ptr<const Schema> schema, WritableOps writableOps = WritableOps::No, const std::shared_ptr<const DataQuery> dataQuery = nullptr);
     command_ parseCommand(const std::string& line, std::ostream& errorStream);
     void changeNode(const dataPath_& name);
-    std::string currentNode() const;
+    [[nodiscard]] std::string currentNode() const;
     Completions completeCommand(const std::string& line, std::ostream& errorStream) const;
     dataPath_ currentPath();
 
diff --git a/src/schema.hpp b/src/schema.hpp
index a1fd5b5..b103fd4 100644
--- a/src/schema.hpp
+++ b/src/schema.hpp
@@ -54,20 +54,20 @@
 public:
     virtual ~Schema();
 
-    virtual yang::NodeTypes nodeType(const std::string& path) const = 0;
-    virtual yang::NodeTypes nodeType(const schemaPath_& location, const ModuleNodePair& node) const = 0;
-    virtual bool isModule(const std::string& name) const = 0;
-    virtual bool listHasKey(const schemaPath_& listPath, const std::string& key) const = 0;
-    virtual bool leafIsKey(const std::string& leafPath) const = 0;
-    virtual bool isConfig(const std::string& path) const = 0;
-    virtual std::optional<std::string> defaultValue(const std::string& leafPath) const = 0;
-    virtual const std::set<std::string> listKeys(const schemaPath_& listPath) const = 0;
-    virtual yang::TypeInfo leafType(const schemaPath_& location, const ModuleNodePair& node) const = 0;
-    virtual yang::TypeInfo leafType(const std::string& path) const = 0;
-    virtual std::optional<std::string> leafTypeName(const std::string& path) const = 0;
-    virtual std::string leafrefPath(const std::string& leafrefPath) const = 0;
-    virtual std::optional<std::string> description(const std::string& location) const = 0;
-    virtual yang::Status status(const std::string& location) const = 0;
+    [[nodiscard]] virtual yang::NodeTypes nodeType(const std::string& path) const = 0;
+    [[nodiscard]] virtual yang::NodeTypes nodeType(const schemaPath_& location, const ModuleNodePair& node) const = 0;
+    [[nodiscard]] virtual bool isModule(const std::string& name) const = 0;
+    [[nodiscard]] virtual bool listHasKey(const schemaPath_& listPath, const std::string& key) const = 0;
+    [[nodiscard]] virtual bool leafIsKey(const std::string& leafPath) const = 0;
+    [[nodiscard]] virtual bool isConfig(const std::string& path) const = 0;
+    [[nodiscard]] virtual std::optional<std::string> defaultValue(const std::string& leafPath) const = 0;
+    [[nodiscard]] virtual const std::set<std::string> listKeys(const schemaPath_& listPath) const = 0;
+    [[nodiscard]] virtual yang::TypeInfo leafType(const schemaPath_& location, const ModuleNodePair& node) const = 0;
+    [[nodiscard]] virtual yang::TypeInfo leafType(const std::string& path) const = 0;
+    [[nodiscard]] virtual std::optional<std::string> leafTypeName(const std::string& path) const = 0;
+    [[nodiscard]] virtual std::string leafrefPath(const std::string& leafrefPath) const = 0;
+    [[nodiscard]] virtual std::optional<std::string> description(const std::string& location) const = 0;
+    [[nodiscard]] virtual yang::Status status(const std::string& location) const = 0;
 
-    virtual std::set<ModuleNodePair> availableNodes(const boost::variant<dataPath_, schemaPath_, module_>& path, const Recursion recursion) const = 0;
+    [[nodiscard]] virtual std::set<ModuleNodePair> availableNodes(const boost::variant<dataPath_, schemaPath_, module_>& path, const Recursion recursion) const = 0;
 };
diff --git a/src/sysrepo_access.hpp b/src/sysrepo_access.hpp
index 016d49c..a3db4c1 100644
--- a/src/sysrepo_access.hpp
+++ b/src/sysrepo_access.hpp
@@ -28,7 +28,7 @@
 public:
     ~SysrepoAccess() override;
     SysrepoAccess(const std::string& appname, const Datastore datastore);
-    Tree getItems(const std::string& path) const override;
+    [[nodiscard]] Tree getItems(const std::string& path) const override;
     void setLeaf(const std::string& path, leaf_data_ value) override;
     void createItem(const std::string& path) override;
     void deleteItem(const std::string& path) override;
@@ -41,7 +41,7 @@
     void discardChanges() override;
     void copyConfig(const Datastore source, const Datastore destination) override;
 
-    std::string dump(const DataFormat format) const override;
+    [[nodiscard]] std::string dump(const DataFormat format) const override;
 private:
     std::vector<ListInstance> listInstances(const std::string& path) override;
     [[noreturn]] void reportErrors() const;
diff --git a/src/yang_access.hpp b/src/yang_access.hpp
index aaabd4b..075ba26 100644
--- a/src/yang_access.hpp
+++ b/src/yang_access.hpp
@@ -22,7 +22,7 @@
 public:
     YangAccess();
     ~YangAccess() override;
-    Tree getItems(const std::string& path) const override;
+    [[nodiscard]] Tree getItems(const std::string& path) const override;
     void setLeaf(const std::string& path, leaf_data_ value) override;
     void createItem(const std::string& path) override;
     void deleteItem(const std::string& path) override;
@@ -35,7 +35,7 @@
     std::shared_ptr<Schema> schema() override;
 
     void enableFeature(const std::string& module, const std::string& feature);
-    std::string dump(const DataFormat format) const override;
+    [[nodiscard]] std::string dump(const DataFormat format) const override;
 
     void loadModule(const std::string& name);
     void addSchemaFile(const std::string& path);
diff --git a/src/yang_schema.hpp b/src/yang_schema.hpp
index 3663ccd..a527ef3 100644
--- a/src/yang_schema.hpp
+++ b/src/yang_schema.hpp
@@ -31,22 +31,22 @@
     YangSchema(std::shared_ptr<libyang::Context> lyCtx);
     ~YangSchema() override;
 
-    yang::NodeTypes nodeType(const std::string& path) const override;
-    yang::NodeTypes nodeType(const schemaPath_& location, const ModuleNodePair& node) const override;
-    bool isModule(const std::string& name) const override;
-    bool listHasKey(const schemaPath_& listPath, const std::string& key) const override;
-    bool leafIsKey(const std::string& leafPath) const override;
-    bool isConfig(const std::string& path) const override;
-    std::optional<std::string> defaultValue(const std::string& leafPath) const override;
-    const std::set<std::string> listKeys(const schemaPath_& listPath) const override;
-    yang::TypeInfo leafType(const schemaPath_& location, const ModuleNodePair& node) const override;
-    yang::TypeInfo leafType(const std::string& path) const override;
+    [[nodiscard]] yang::NodeTypes nodeType(const std::string& path) const override;
+    [[nodiscard]] yang::NodeTypes nodeType(const schemaPath_& location, const ModuleNodePair& node) const override;
+    [[nodiscard]] bool isModule(const std::string& name) const override;
+    [[nodiscard]] bool listHasKey(const schemaPath_& listPath, const std::string& key) const override;
+    [[nodiscard]] bool leafIsKey(const std::string& leafPath) const override;
+    [[nodiscard]] bool isConfig(const std::string& path) const override;
+    [[nodiscard]] std::optional<std::string> defaultValue(const std::string& leafPath) const override;
+    [[nodiscard]] const std::set<std::string> listKeys(const schemaPath_& listPath) const override;
+    [[nodiscard]] yang::TypeInfo leafType(const schemaPath_& location, const ModuleNodePair& node) const override;
+    [[nodiscard]] yang::TypeInfo leafType(const std::string& path) const override;
     /** @brief If the leaf type is a typedef, returns the typedef name. */
-    std::optional<std::string> leafTypeName(const std::string& path) const override;
-    std::string leafrefPath(const std::string& leafrefPath) const override;
-    std::set<ModuleNodePair> availableNodes(const boost::variant<dataPath_, schemaPath_, module_>& path, const Recursion recursion) const override;
-    std::optional<std::string> description(const std::string& path) const override;
-    yang::Status status(const std::string& location) const override;
+    [[nodiscard]] std::optional<std::string> leafTypeName(const std::string& path) const override;
+    [[nodiscard]] std::string leafrefPath(const std::string& leafrefPath) const override;
+    [[nodiscard]] std::set<ModuleNodePair> availableNodes(const boost::variant<dataPath_, schemaPath_, module_>& path, const Recursion recursion) const override;
+    [[nodiscard]] std::optional<std::string> description(const std::string& path) const override;
+    [[nodiscard]] yang::Status status(const std::string& location) const override;
 
     void registerModuleCallback(const std::function<std::string(const char*, const char*, const char*, const char*)>& clb);
 
@@ -66,23 +66,23 @@
     void addSchemaDirectory(const char* directoryName);
 
     /** @short Creates a new data node from a path (to be used with NETCONF edit-config) */
-    std::shared_ptr<libyang::Data_Node> dataNodeFromPath(const std::string& path, const std::optional<const std::string> value = std::nullopt) const;
+    [[nodiscard]] std::shared_ptr<libyang::Data_Node> dataNodeFromPath(const std::string& path, const std::optional<const std::string> value = std::nullopt) const;
     std::shared_ptr<libyang::Module> getYangModule(const std::string& name);
 
 private:
     template <typename NodeType>
-    yang::TypeInfo impl_leafType(const std::shared_ptr<libyang::Schema_Node>& node) const;
-    std::set<std::string> modules() const;
+    [[nodiscard]] yang::TypeInfo impl_leafType(const std::shared_ptr<libyang::Schema_Node>& node) const;
+    [[nodiscard]] std::set<std::string> modules() const;
 
 
     /** @short Returns a single Schema_Node if the criteria matches only one, otherwise nullptr. */
-    std::shared_ptr<libyang::Schema_Node> getSchemaNode(const std::string& node) const;
+    [[nodiscard]] std::shared_ptr<libyang::Schema_Node> getSchemaNode(const std::string& node) const;
     /** @short Returns a single Schema_Node if the criteria matches only one, otherwise nullptr. */
-    std::shared_ptr<libyang::Schema_Node> getSchemaNode(const schemaPath_& listPath) const;
+    [[nodiscard]] std::shared_ptr<libyang::Schema_Node> getSchemaNode(const schemaPath_& listPath) const;
 
     /** @short Returns a single Schema_Node if the criteria matches only one, otherwise nullptr. */
-    std::shared_ptr<libyang::Schema_Node> getSchemaNode(const schemaPath_& location, const ModuleNodePair& node) const;
+    [[nodiscard]] std::shared_ptr<libyang::Schema_Node> getSchemaNode(const schemaPath_& location, const ModuleNodePair& node) const;
     std::shared_ptr<libyang::Context> m_context;
 
-    std::shared_ptr<libyang::Schema_Node> impl_getSchemaNode(const std::string& node) const;
+    [[nodiscard]] std::shared_ptr<libyang::Schema_Node> impl_getSchemaNode(const std::string& node) const;
 };
diff --git a/tests/mock/sysrepo_subscription.hpp b/tests/mock/sysrepo_subscription.hpp
index 7683814..5a2ce82 100644
--- a/tests/mock/sysrepo_subscription.hpp
+++ b/tests/mock/sysrepo_subscription.hpp
@@ -29,7 +29,7 @@
 class DataSupplier {
 public:
     virtual ~DataSupplier();
-    virtual DatastoreAccess::Tree get_data(const std::string& xpath) const = 0;
+    [[nodiscard]] virtual DatastoreAccess::Tree get_data(const std::string& xpath) const = 0;
 };
 
 
