From 470a0fcaa531e521ce1bd171d2c0864ca8d4f815 Mon Sep 17 00:00:00 2001 From: Rubin Gerritsen Date: Tue, 11 Jun 2024 14:36:17 +0200 Subject: [PATCH] cocinelle: Add a sematic patch file for ztest string assertions ztest now provides functionality to compare strings. These are simpler to use than the strcmp ways. The semantic patch transforms many of the commonly used patterns. It does not handle variable length macros. Signed-off-by: Rubin Gerritsen --- scripts/coccinelle/ztest_strcmp.cocci | 79 +++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 scripts/coccinelle/ztest_strcmp.cocci diff --git a/scripts/coccinelle/ztest_strcmp.cocci b/scripts/coccinelle/ztest_strcmp.cocci new file mode 100644 index 00000000000..6448bb1ad3c --- /dev/null +++ b/scripts/coccinelle/ztest_strcmp.cocci @@ -0,0 +1,79 @@ +/// Find cases where ztest string comparisons macros can be used +// Copyright: (C) 2024 Nordic Semiconductor ASA +// SPDX-License-Identifier: Apache-2.0 +// Confidence: LOW +// Options: --no-includes --include-headers + +virtual patch +virtual context +virtual org +virtual report + +// Comparing result of strcmp with 0 + +@@ expression E1,E2; @@ +- zassert_equal(strcmp(E1, E2), 0); ++ zassert_str_equal(E1, E2); + +@@ expression E1,E2,E3; @@ +- zassert_equal(strcmp(E1, E2), 0, E3); ++ zassert_str_equal(E1, E2, E3); + +@@ expression E1,E2; @@ +- zassert_equal(0, strcmp(E1, E2)); ++ zassert_str_equal(E1, E2); + +@@ expression E1,E2,E3; @@ +- zassert_equal(0, !strcmp(E1, E2), E3); ++ zassert_str_equal(E1, E2, E3); + + + +// Using assert_true with !strcmp + +@@ expression E1,E2; @@ +- zassert_true(!strcmp(E1, E2)); ++ zassert_str_equal(E1, E2); + +@@ expression E1,E2,E3; @@ +- zassert_true(!strcmp(E1, E2), E3); ++ zassert_str_equal(E1, E2, E3); + + +// using zassert_true with strcmp(E1, E2) == 0 + +@@expression E1,E2; @@ +- zassert_true(strcmp(E1, E2) == 0); ++ zassert_str_equal(E1, E2); + +@@expression E1,E2; @@ +- zassert_true((strcmp(E1, E2) == 0)); ++ zassert_str_equal(E1, E2); + +@@expression E1,E2,E3; @@ +- zassert_true(strcmp(E1, E2) == 0, E3); ++ zassert_str_equal(E1, E2, E3); + +@@expression E1,E2,E3; @@ +- zassert_true((strcmp(E1, E2) == 0), E3); ++ zassert_str_equal(E1, E2, E3); + + + +// using zassert_true with 0 == strcmp(E1, E2) + +@@expression E1,E2; @@ +- zassert_true(0 == strcmp(E1, E2)); ++ zassert_str_equal(E1, E2); + +@@expression E1,E2; @@ +- zassert_true((0 == strcmp(E1, E2))); ++ zassert_str_equal(E1, E2); + +@@expression E1,E2,E3; @@ +- zassert_true(0 == strcmp(E1, E2), E3); ++ zassert_str_equal(E1, E2, E3); + +@@expression E1,E2,E3; @@ +- zassert_true((0 == strcmp(E1, E2)), E3); ++ zassert_str_equal(E1, E2, E3);