diff --git a/tools/lint/cmd.c b/tools/lint/cmd.c
index 872e3db..a162f6e 100644
--- a/tools/lint/cmd.c
+++ b/tools/lint/cmd.c
@@ -69,7 +69,7 @@
         "Print a module", "f:hL:o:P:q"
     },
     {
-        "data", cmd_data_opt, cmd_data_dep, cmd_data_exec, cmd_data_fin, cmd_data_help, NULL,
+        "data", cmd_data_opt, cmd_data_dep, cmd_data_store, cmd_data_process, cmd_data_help, NULL,
         "Load, validate and optionally print instance data", "d:ef:F:hmo:O:R:r:nt:x:"
     },
     {
@@ -77,7 +77,7 @@
         "List all the loaded modules", "f:h"
     },
     {
-        "feature", cmd_feature_opt, cmd_feature_dep, cmd_feature_exec, cmd_feature_fin, cmd_feature_help, NULL,
+        "feature", cmd_feature_opt, cmd_feature_dep, cmd_feature_exec, cmd_feature_print_fparam, cmd_feature_help, NULL,
         "Print all features of module(s) with their state", "haf"
     },
     {
@@ -98,7 +98,7 @@
     },
 #ifndef NDEBUG
     {
-        "debug", cmd_debug_opt, cmd_debug_dep, cmd_debug_exec, cmd_debug_fin, cmd_debug_help, NULL,
+        "debug", cmd_debug_opt, cmd_debug_dep, cmd_debug_store, cmd_debug_setlog, cmd_debug_help, NULL,
         "Display specific debug message groups", "h"
     },
 #endif
diff --git a/tools/lint/cmd.h b/tools/lint/cmd.h
index 9cf816d..047c580 100644
--- a/tools/lint/cmd.h
+++ b/tools/lint/cmd.h
@@ -165,7 +165,7 @@
  * @param[in] posv Path to the file where the data is located.
  * @return 0 on success.
  */
-int cmd_data_exec(struct ly_ctx **ctx, struct yl_opt *yo, const char *posv);
+int cmd_data_store(struct ly_ctx **ctx, struct yl_opt *yo, const char *posv);
 
 /**
  * @brief Parse, validate and optionally print data instances.
@@ -174,7 +174,7 @@
  * @param[in] yo Context of yanglint. All necessary parameters should already be set.
  * @return 0 on success.
  */
-int cmd_data_fin(struct ly_ctx *ctx, struct yl_opt *yo);
+int cmd_data_process(struct ly_ctx *ctx, struct yl_opt *yo);
 void cmd_data_help(void);
 
 /* cmd_list.c */
@@ -229,7 +229,7 @@
  * @param[in,out] yo context for yanglint. All necessary parameters should already be set.
  * @return 0 on success.
  */
-int cmd_feature_fin(struct ly_ctx *ctx, struct yl_opt *yo);
+int cmd_feature_print_fparam(struct ly_ctx *ctx, struct yl_opt *yo);
 void cmd_feature_help(void);
 
 /* cmd_load.c */
@@ -381,7 +381,7 @@
  * @param[in] posv Name of the debug type to be set.
  * @return 0 on success.
  */
-int cmd_debug_exec(struct ly_ctx **ctx, struct yl_opt *yo, const char *posv);
+int cmd_debug_store(struct ly_ctx **ctx, struct yl_opt *yo, const char *posv);
 
 /**
  * @brief Set debug logging.
@@ -390,7 +390,7 @@
  * @param[in,out] yo context for yanglint. All necessary parameters should already be set.
  * @return 0 on success.
  */
-int cmd_debug_fin(struct ly_ctx *ctx, struct yl_opt *yo);
+int cmd_debug_setlog(struct ly_ctx *ctx, struct yl_opt *yo);
 void cmd_debug_help(void);
 
 #endif /* COMMANDS_H_ */
diff --git a/tools/lint/cmd_data.c b/tools/lint/cmd_data.c
index ac87e7c..9fa1b95 100644
--- a/tools/lint/cmd_data.c
+++ b/tools/lint/cmd_data.c
@@ -350,7 +350,7 @@
 }
 
 int
-cmd_data_exec(struct ly_ctx **ctx, struct yl_opt *yo, const char *posv)
+cmd_data_store(struct ly_ctx **ctx, struct yl_opt *yo, const char *posv)
 {
     (void) ctx;
     struct ly_in *in;
@@ -673,7 +673,7 @@
 }
 
 int
-cmd_data_fin(struct ly_ctx *ctx, struct yl_opt *yo)
+cmd_data_process(struct ly_ctx *ctx, struct yl_opt *yo)
 {
     /* parse, validate and print data */
     if (process_data(ctx, yo->data_type, yo->data_merge, yo->data_out_format, yo->out, yo->data_parse_options,
diff --git a/tools/lint/cmd_debug.c b/tools/lint/cmd_debug.c
index c99527d..1432fe9 100644
--- a/tools/lint/cmd_debug.c
+++ b/tools/lint/cmd_debug.c
@@ -99,7 +99,7 @@
 }
 
 int
-cmd_debug_exec(struct ly_ctx **ctx, struct yl_opt *yo, const char *posv)
+cmd_debug_store(struct ly_ctx **ctx, struct yl_opt *yo, const char *posv)
 {
     (void) ctx;
     uint32_t i;
@@ -125,7 +125,7 @@
 }
 
 int
-cmd_debug_fin(struct ly_ctx *ctx, struct yl_opt *yo)
+cmd_debug_setlog(struct ly_ctx *ctx, struct yl_opt *yo)
 {
     (void) ctx;
     return ly_log_dbg_groups(yo->dbg_groups);
diff --git a/tools/lint/cmd_feature.c b/tools/lint/cmd_feature.c
index f3d784f..09f8a29 100644
--- a/tools/lint/cmd_feature.c
+++ b/tools/lint/cmd_feature.c
@@ -152,7 +152,7 @@
 }
 
 int
-cmd_feature_fin(struct ly_ctx *ctx, struct yl_opt *yo)
+cmd_feature_print_fparam(struct ly_ctx *ctx, struct yl_opt *yo)
 {
     (void) ctx;
 
diff --git a/tools/lint/main_ni.c b/tools/lint/main_ni.c
index 10ad792..3b6c71a 100644
--- a/tools/lint/main_ni.c
+++ b/tools/lint/main_ni.c
@@ -366,7 +366,7 @@
                 return -1;
             }
         } else {
-            if (cmd_data_exec(&ctx, yo, filepath)) {
+            if (cmd_data_store(&ctx, yo, filepath)) {
                 return -1;
             }
         }
@@ -398,18 +398,18 @@
     for (str = groups; (end = strchr(str, ',')); str = end + 1) {
         /* Temporary modify input string. */
         *end = '\0';
-        rc = cmd_debug_exec(NULL, yo, str);
+        rc = cmd_debug_store(NULL, yo, str);
         *end = ',';
         if (rc) {
             return -1;
         }
     }
     /* Process single/last debug argument. */
-    if (cmd_debug_exec(NULL, yo, str)) {
+    if (cmd_debug_store(NULL, yo, str)) {
         return -1;
     }
     /* All debug arguments are valid, so they can apply. */
-    if (cmd_debug_fin(NULL, yo)) {
+    if (cmd_debug_setlog(NULL, yo)) {
         return -1;
     }
 
@@ -750,7 +750,7 @@
                 goto cleanup;
             }
         }
-        if ((ret = cmd_feature_fin(ctx, &yo))) {
+        if ((ret = cmd_feature_print_fparam(ctx, &yo))) {
             goto cleanup;
         }
     } else if (yo.schema_out_format && yo.schema_node_path) {
@@ -772,7 +772,7 @@
 
     /* do the data validation despite the schema was printed */
     if (yo.data_inputs.size) {
-        if ((ret = cmd_data_fin(ctx, &yo))) {
+        if ((ret = cmd_data_process(ctx, &yo))) {
             goto cleanup;
         }
     }
