diff --git a/config.c b/config.c
index ce2ed47..5a2f4f0 100644
--- a/config.c
+++ b/config.c
@@ -59,8 +59,10 @@
 static void config_parse(struct config *config, char *buf)
 {
 	struct config_item *item;
-	char *name, *value;
-	char *p, *line;
+	char *name;
+	char *value;
+	char *p;
+	char *line;
 
 	for (p = NULL, line = strtok_r(buf, "\n", &p); line;
 	     line = strtok_r(NULL, "\n", &p)) {
@@ -102,7 +104,8 @@
 static struct config *config_init_fd(int fd, const char *filename)
 {
 	struct config *config;
-	size_t size, len;
+	size_t size;
+	size_t len;
 	ssize_t rc;
 	char *buf;
 
@@ -162,7 +165,8 @@
 
 void config_fini(struct config *config)
 {
-	struct config_item *item, *next;
+	struct config_item *item;
+	struct config_item *next;
 
 	for (item = config->items; item; item = next) {
 		next = item->next;
diff --git a/console-client.c b/console-client.c
index f05a6f8..a9888cd 100644
--- a/console-client.c
+++ b/console-client.c
@@ -260,7 +260,8 @@
 
 int main(int argc, char *argv[])
 {
-	struct console_client _client, *client;
+	struct console_client _client;
+	struct console_client *client;
 	struct pollfd pollfds[2];
 	enum process_rc prc = PROCESS_OK;
 	const char *config_path = NULL;
diff --git a/console-server.c b/console-server.c
index 2750349..9da26b6 100644
--- a/console-server.c
+++ b/console-server.c
@@ -240,7 +240,8 @@
 static void tty_change_baudrate(struct console *console)
 {
 	struct handler *handler;
-	int i, rc;
+	int i;
+	int rc;
 
 	tty_init_termios(console);
 
@@ -428,7 +429,8 @@
 		      struct config *config __attribute__((unused)))
 {
 	int dbus_poller = 0;
-	int fd, r;
+	int fd;
+	int r;
 
 	if (!console) {
 		warnx("Couldn't get valid console");
@@ -470,10 +472,13 @@
 
 static void handlers_init(struct console *console, struct config *config)
 {
-	/* NOLINTNEXTLINE(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp) */
-	extern struct handler *__start_handlers, *__stop_handlers;
+	/* NOLINTBEGIN(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp) */
+	extern struct handler *__start_handlers;
+	extern struct handler *__stop_handlers;
+	/* NOLINTEND(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp) */
 	struct handler *handler;
-	int i, rc;
+	int i;
+	int rc;
 
 	console->n_handlers = &__stop_handlers - &__start_handlers;
 	console->handlers = &__start_handlers;
@@ -655,7 +660,8 @@
 
 static long get_poll_timeout(struct console *console, struct timeval *cur_time)
 {
-	struct timeval *earliest, interval;
+	struct timeval *earliest;
+	struct timeval interval;
 	struct poller *poller;
 	int i;
 
@@ -692,7 +698,8 @@
 	struct poller *poller;
 	struct pollfd *pollfd;
 	enum poller_ret prc;
-	int i, rc;
+	int i;
+	int rc;
 
 	rc = 0;
 
@@ -848,7 +855,8 @@
 	rc = -1;
 
 	for (;;) {
-		int c, idx;
+		int c;
+		int idx;
 
 		c = getopt_long(argc, argv, "c:", options, &idx);
 		if (c == -1) {
diff --git a/log-handler.c b/log-handler.c
index 5b17c94..ab30827 100644
--- a/log-handler.c
+++ b/log-handler.c
@@ -130,7 +130,8 @@
 		    struct config *config)
 {
 	struct log_handler *lh = to_log_handler(handler);
-	const char *filename, *logsize_str;
+	const char *filename;
+	const char *logsize_str;
 	size_t logsize = default_logsize;
 	int rc;
 
diff --git a/ringbuffer.c b/ringbuffer.c
index 93e78c3..5ec1fbc 100644
--- a/ringbuffer.c
+++ b/ringbuffer.c
@@ -159,7 +159,8 @@
 {
 	struct ringbuffer_consumer *rbc;
 	size_t wlen;
-	int i, rc;
+	int i;
+	int rc;
 
 	if (len >= rb->size) {
 		return -1;
diff --git a/socket-handler.c b/socket-handler.c
index f37dcb8..4a53a51 100644
--- a/socket-handler.c
+++ b/socket-handler.c
@@ -123,7 +123,8 @@
 static ssize_t send_all(struct client *client, void *buf, size_t len,
 			bool block)
 {
-	int fd, flags;
+	int fd;
+	int flags;
 	ssize_t rc;
 	size_t pos;
 
@@ -168,7 +169,8 @@
 {
 	uint8_t *buf;
 	ssize_t wlen;
-	size_t len, total_len;
+	size_t len;
+	size_t total_len;
 	bool block;
 
 	total_len = 0;
@@ -302,7 +304,8 @@
 {
 	struct socket_handler *sh = to_socket_handler(handler);
 	struct client *client;
-	int fd, n;
+	int fd;
+	int n;
 
 	if (!(events & POLLIN)) {
 		return POLLER_OK;
diff --git a/test/ringbuffer-test-utils.c b/test/ringbuffer-test-utils.c
index fff4325..3b3a4a9 100644
--- a/test/ringbuffer-test-utils.c
+++ b/test/ringbuffer-test-utils.c
@@ -33,7 +33,8 @@
 						    size_t force_len)
 {
 	struct rb_test_ctx *ctx = data;
-	size_t len, total_len;
+	size_t len;
+	size_t total_len;
 	uint8_t *buf;
 
 	if (ctx->ignore_poll) {
diff --git a/test/test-ringbuffer-boundary-poll.c b/test/test-ringbuffer-boundary-poll.c
index aa8a350..4cd1c20 100644
--- a/test/test-ringbuffer-boundary-poll.c
+++ b/test/test-ringbuffer-boundary-poll.c
@@ -9,7 +9,8 @@
 void test_boundary_poll(void)
 {
 	uint8_t in_buf[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
-	struct rb_test_ctx _ctx, *ctx = &_ctx;
+	struct rb_test_ctx _ctx;
+	struct rb_test_ctx *ctx = &_ctx;
 	struct ringbuffer *rb;
 	int rc;
 
diff --git a/test/test-ringbuffer-boundary-read.c b/test/test-ringbuffer-boundary-read.c
index f62f66f..2b7e4b4 100644
--- a/test/test-ringbuffer-boundary-read.c
+++ b/test/test-ringbuffer-boundary-read.c
@@ -8,10 +8,12 @@
 
 void test_boundary_read(void)
 {
-	uint8_t *out_buf, in_buf[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
+	uint8_t *out_buf;
+	uint8_t in_buf[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
 	struct ringbuffer_consumer *rbc;
 	struct ringbuffer *rb;
-	size_t len, pos;
+	size_t len;
+	size_t pos;
 	int rc;
 
 	static_assert(sizeof(in_buf) * 2 > 10, "");
diff --git a/test/test-ringbuffer-contained-offset-read.c b/test/test-ringbuffer-contained-offset-read.c
index 1fbe1cb..05484d2 100644
--- a/test/test-ringbuffer-contained-offset-read.c
+++ b/test/test-ringbuffer-contained-offset-read.c
@@ -8,7 +8,8 @@
 
 void test_contained_offset_read(void)
 {
-	uint8_t *out_buf, in_buf[] = { 'a', 'b', 'c' };
+	uint8_t *out_buf;
+	uint8_t in_buf[] = { 'a', 'b', 'c' };
 	struct ringbuffer_consumer *rbc;
 	struct ringbuffer *rb;
 	size_t len;
diff --git a/test/test-ringbuffer-contained-read.c b/test/test-ringbuffer-contained-read.c
index 37df3cf..96018c4 100644
--- a/test/test-ringbuffer-contained-read.c
+++ b/test/test-ringbuffer-contained-read.c
@@ -8,7 +8,8 @@
 
 void test_contained_read(void)
 {
-	uint8_t *out_buf, in_buf[] = { 'a', 'b', 'c' };
+	uint8_t *out_buf;
+	uint8_t in_buf[] = { 'a', 'b', 'c' };
 	struct ringbuffer_consumer *rbc;
 	struct ringbuffer *rb;
 	size_t len;
diff --git a/test/test-ringbuffer-poll-force.c b/test/test-ringbuffer-poll-force.c
index e1e4245..34cc348 100644
--- a/test/test-ringbuffer-poll-force.c
+++ b/test/test-ringbuffer-poll-force.c
@@ -11,7 +11,8 @@
 	uint8_t in_buf[] = {
 		'a', 'b', 'c', 'd', 'e', 'f',
 	};
-	struct rb_test_ctx _ctx, *ctx = &_ctx;
+	struct rb_test_ctx _ctx;
+	struct rb_test_ctx *ctx = &_ctx;
 	struct ringbuffer *rb;
 	int rc;
 
diff --git a/test/test-ringbuffer-read-commit.c b/test/test-ringbuffer-read-commit.c
index 0dba0d7..9173b9f 100644
--- a/test/test-ringbuffer-read-commit.c
+++ b/test/test-ringbuffer-read-commit.c
@@ -8,7 +8,8 @@
 
 void test_read_commit(void)
 {
-	uint8_t *out_buf, in_buf[] = {
+	uint8_t *out_buf;
+	uint8_t in_buf[] = {
 		'a',
 		'b',
 		'c',
diff --git a/test/test-ringbuffer-simple-poll.c b/test/test-ringbuffer-simple-poll.c
index 89a9477..d94e5db 100644
--- a/test/test-ringbuffer-simple-poll.c
+++ b/test/test-ringbuffer-simple-poll.c
@@ -9,7 +9,8 @@
 void test_simple_poll(void)
 {
 	uint8_t in_buf[] = { 'a', 'b', 'c' };
-	struct rb_test_ctx _ctx, *ctx;
+	struct rb_test_ctx _ctx;
+	struct rb_test_ctx *ctx;
 	struct ringbuffer *rb;
 	int rc;
 
diff --git a/tty-handler.c b/tty-handler.c
index a02d899..3976aec 100644
--- a/tty-handler.c
+++ b/tty-handler.c
@@ -85,7 +85,8 @@
 
 static int tty_drain_queue(struct tty_handler *th, size_t force_len)
 {
-	size_t len, total_len;
+	size_t len;
+	size_t total_len;
 	ssize_t wlen;
 	uint8_t *buf;
 
